私はプロジェクトのGUIを作っています。私の監督は、プログラムの各反復に最大7分かかる可能性があるため、プログレスバーを含めるように求めました。メインウィンドウを閉じずにTkinterポップアップを自動的に閉じる
私はプログレスバーを別のウィンドウでポップアップし、プロセスが終了した後に閉じるが、現在の理解では、手動でポップアップを閉じるか、GUI全体を一度に閉じる必要があります。
これは、私はストレートのpythonが付属していません余分なモジュールをダウンロードしないようしたい可能であれば、私は
import Tkinter as tk
from ttk import Progressbar
from os import listdir
import threading
import time
root = tk.Tk()
root.title("TCC Image Processing")
def create_tcc(input_bar, input_progress_dialog):
input_bar['maximum'] = 5
input_bar['value'] = 0
for x in range(5):
time.sleep(1)
input_bar['value'] += 1
# this line is where the touble seems to be
input_progress_dialog.destroy()
def run_tcc():
progress_dialog = tk.Toplevel()
progress_dialog.title("TCC Processing")
bar = Progressbar(progress_dialog, orient="horizontal", length=500, value=0, mode="determinate")
bar.grid(row=4, columnspan=2)
t = threading.Thread(target=create_tcc, args=(bar, progress_dialog))
t.start()
tcc_run_button = tk.Button(root, text="RUN", command=lambda:run_tcc())
tcc_run_button.pack()
root.mainloop()
を使用しているコードの簡易版です。
その他:グローバルな 'root'、' run_tcc.root2'、 'create_tcc.root'という名前の類似点は混乱します。ローカル変数のどちらも実際にアプリケーションのプライマリウィンドウを参照していないので、 'progress_dialog'のような別の変数名を選択することができますか? –
あなたのコードは、現在編集されているフォームで完全に動作します。あなたは今それでどんな問題を抱えていますか? –
上記のコードが実行され、ボタンをクリックすると、プログレスバーが表示されたポップアップが表示されます。バーは4回歩き、5回踏み込むと停止します。現在のバージョンのコードで5回踏み込んだ唯一の時間は、プログラムがクラッシュし、問題が発生したという新しいポップアップが現れたことです。 – cforeman