我的Tkinter GUI太...静态?
我用Tkinter做了一个图形界面,用来开始测量和分析的过程,基本上就是点击一个按钮就能启动。因为这些测量可能需要一些时间,所以我想加一个进度条,就是这个:
http://tkinter.unpythonic.net/wiki/ProgressMeter
但是当我启动这个过程时,我的整个Tkinter窗口就变得一团糟,直到测量完成后才会重新加载,进度条也直接跳到100%。这并不是我想要的效果。
这是怎么回事呢?我对编程还很陌生,所以可能没有所有的工具。我是不是需要引入一个单独的线程之类的东西,这样测量和Tkinter的主循环(这是不是就是主循环?)才能同时运行?如果是的话,我该怎么做呢?
2 个回答
0
每次你更新进度条的时候,都要调用 widget.update()
或者 root_window.update()
。
2
制作一个进度条(这些是我处理一个67MB文件时的代码片段。)
progress = ttk.Progressbar(bottommenuframe, orient=HORIZONTAL, length=100, maximum=190073, mode='determinate')
progress.pack(side=RIGHT)
progress.start() ## this starts the progressbar
然后在你分析的时候:
def analysisfunction():
progress.step(1)
##do some analysis
root.after(0, analysisFunction)
if job == complete:
stop
就像我说的,这个方法可以和我的67MB文件以及tkinter一起使用。希望这能帮到你一点 :)