上次我自己提出一個問題就是如何實現scrollbar自動滾動(),經過不懈努力終於解決了這個問題!值得慶賀~~~
話不多說,程序員還是上個代碼比較實在!以下就是一個小例子:
from tkinter import*
class TYST(Tk):
def __init__(self):
Tk.__init__(self):
self.scrollbar = Scrollbar(self)
self.scrollbar.pack( side = RIGHT, fill=Y )
self.mylist = Listbox(self, yscrollcommand = self.scrollbar.set )
for line in range(100):
#self.mylist.insert(END,str(line))
self.mylist.insert(END,"This is line number " + str(line))
self.mylist.pack( side = LEFT, fill = BOTH )
self.scrollbar.config( command = self.mylist.yview )
def main():
tyst = TYST()
for i in range(100):
tyst.after(100,tyst.mylist.yview_moveto(i/100),tyst.update())#滾動的同時要不停刷新
tyst.mainloop()
if __name__=='__main__':
main()
大家應該可以看出,重要的地方應該就是這里啦:
for i in range(100):
tyst.after(100,tyst.mylist.yview_moveto(i/100),tyst.update())#滾動的同時要不停刷新
首先,yview_moveto()這個函數能讓你控制滾動條,1代表整個滾動條,比如你想讓他滾動到一半的位置你就要這么寫yview_moveto(0.5),以此類推就能用循環來控制它處於不同的位置,注意一個地方,
在這里,必須是mylist.yview_moveto(),因為你上面已經是用mylist綁定了滾動條,如果你用別的控件綁定滾動條,就是“控件名.yview_moveto()”,然后,調試的時候你就會發現,如果沒有update()
進行刷新,就會出現等滾動條滾動完了以后界面才會出現,所以,一定要記得用update()刷新!至於after我自己也還沒弄明白怎么用,其實這個地方如果不用after也是可以的
希望這個小例子對大家有幫助,如果有人比較清楚after怎么使用的話,希望不吝賜教~~
