2011-10-07 7 views
5

私はTkinter GUIを使用して測定と分析のプロセスを開始します。これは基本的にはクリックされたボタンで行われます。これらの測定はしばらく時間がかかることができますので、私は、プログレスバー、すなわち、この一つを含むことを試みた:My Tkinter GUIも静的ですか?

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

をしかし、私はプロセスを開始行う場合の測定が完了するまで、私の全体のTkinterのウィンドウはナンセンスになり、それはちょっと自分自身をリロードして、進捗バーが100%に設定されています。これはちょっと私が起こりたいと思ったものではありません。

何が起こったのですか?私はこのプログラミング全体にはかなり新しいので、私が推測するすべてのツールがありません。私は、測定とtkinterメインループ(それは何ですか?)が同時に実行されるように、別々の糸などを導入する必要がありますか?もしそうなら、どうしたらいいですか?

答えて

0

コールwidget.update()/root_window.update()たびにプログレスバーを更新

+1

更新すると危険ではありませんが、意図しない副作用を招く恐れがあります。経験則として、なぜそれが冗談であるのか分からなければ、それを呼び出すべきではありません。通常、 'update_idletasks'はより良い選択です。 –

2

(これらは、67メガバイトのファイルを処理する私のコードからの抜粋です。)プログレスバーを作成し

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で動作すると言いました。 ほんの少し役に立ちます。