python tkinter 中 listbox綁定scrollbar實現自動循環滾動


上次我自己提出一個問題就是如何實現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怎么使用的話,希望不吝賜教~~



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM