2011-10-07 40 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一起工作。 希望有所幫助:)