0
我想在Python PyQt的我的QListWidget中加載一些非常大的文件的一部分。當用戶移動QListWidget的滾動條併到達滾動條的末尾時,事件正在激活,並且文件的下一部分正在加載(追加)到QListWidget。是否有一些事件用於控制滾動條的結束位置?Python PyQt滾動條在結束位置事件
我想在Python PyQt的我的QListWidget中加載一些非常大的文件的一部分。當用戶移動QListWidget的滾動條併到達滾動條的末尾時,事件正在激活,並且文件的下一部分正在加載(追加)到QListWidget。是否有一些事件用於控制滾動條的結束位置?Python PyQt滾動條在結束位置事件
有沒有專門的信號 「滾動到結束」,但你可以很容易地檢查,在valueChanged
信號:
def scrolled(scrollbar, value):
if value == scrollbar.maximum():
print 'reached max' # that will be the bottom/right end
if value == scrollbar.minimum():
print 'reached min' # top/left end
scrollBar = listview.verticalScrollBar()
scrollBar.valueChanged.connect(lambda value: scrolled(scrollBar, value))
編輯:
或者,在一個類中:
class MyWidget(QWidget):
def __init__(self):
# here goes the rest of your initialization code
# like the construction of your listview
# connect the valueChanged signal:
self.listview.verticalScrollBar().valueChanged.connect(self.scrolled)
# your parameter "f"
self.f = 'somevalue' # whatever
def scrolled(self, value):
if value == self.listview.verticalScrollBar().maximum():
self.loadNextChunkOfData()
def loadNextChunkOfData(self):
# load the next piece of data and append to the listview
您應該趕上lambda的文檔和信號槽框架。
如何使用這個lambda表達式爲了給滾動的函數另外3個參數? – Gooman
您可以簡單地編寫以下代碼:'lambda value:scrolled(scrollBar,someParameter,value)'。然而'lambda'更多是爲了這個例子的目的。理想情況下,你可以將上面的代碼放到一個類中,在這裏你可以將'valueChanged'信號連接到這個類的方法,而不是使用「獨立」函數。 – sebastian
這是一個問題,編寫'lambda值:滾動(scrollBar,someParameter,value)'因爲我需要給'self'作爲第一個參數。 – Gooman