python tkinter 中 listbox绑定scrollbar实现自动循环滚动
Posted 两个爱玩的人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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怎么使用的话,希望不吝赐教~~
以上是关于python tkinter 中 listbox绑定scrollbar实现自动循环滚动的主要内容,如果未能解决你的问题,请参考以下文章
Python中tkinter中控件的使用(6.Listbox列表框(单击多选))
python tkinter 中 listbox绑定scrollbar实现自动循环滚动
Python3 Tkinter基础 Listbox for循环与insert 将一个列表中元素添加到Listbox中
如何清除 Tkinter ListBox Python
tkinter 笔记:列表部件 listbox (莫烦python 笔记)
Python:tkinter 之 Listbox & Combobox