2011-10-07 73 views
5

我使用Tkinter GUI来开始测量和分析过程,这个过程基本上是通过单击按钮来完成的。由于这些测量可能需要一段时间,我想包括一个进度条,即此一:我的Tkinter GUI太...静态?

http://tkinter.unpythonic.net/wiki/ProgressMeter

但是当我做启动过程,直到测量完成我的整个Tkinter的窗口变成废话和它有点重新加载,我的进度条设置为100%。这不是我想要发生的事情。

那里发生了什么?我对整个编程的事情都很陌生,所以我没有所有的工具。我是否需要引入一个单独的线程或类似的东西,以便测量和tkinter主循环(就是这样?)同时运行?如果是这样,我该怎么做?

回答

0

通话每次widget.update()/root_window.update()您更新进度条

+1

更新对于调用是危险的(不那么危险,但可能会导致意想不到的副作用)。作为一个经验法则,如果你不知道为什么它是很危险的,你不应该这么称呼它。通常,'update_idletasks'是更好的选择。 –

2

做一个进度

progress = ttk.Progressbar(bottommenuframe, orient=HORIZONTAL, length=100, maximum=190073,  mode='determinate') 
progress.pack(side=RIGHT) 

progress.start() ## this starts the progressbar 

那么你的分析中(这些都是从我的代码段,处理一个67MB的文件):

def analysisfunction(): 
    progress.step(1) 
    ##do some analysis 
    root.after(0, analysisFunction) 

    if job == complete: 
     stop 

就像我说的这将与我的67MB文件和tkinter一起工作。 希望有所帮助:)