完全な開示、これは Reddit からのクロスポストです。
私が取り組んだスクリプトは、tkinter を使用していくつかのボックスをポップアップし、ユーザーから情報を収集するものです。この情報は、終了時に関心のあるログ ファイルを生成する外部アプリケーションを起動するために使用されます。または、ユーザーがそのログ ファイルを手動で生成するために押すことができるボタンを提供します。これら (外部アプリと GUI ボタン) は 2 つの別個のスレッドとして起動され、メイン プログラムは 2 つのスレッドのいずれかが目的のログを提供するのを待機します。ログが表示され、必要なものが揃ったら、最近開いたものをすべて閉じます (理想的な方法ではありませんが、この環境では問題なく動作します)。
私の問題は、これを問題なく1回実行できることですが、ループしようとすると、スレッド化された割り込みボタンのポイントになり(実際にtkinter
はスクリプトで初めて使用されるわけではありません)、ブロックされます-おそらく初めて Tk() を不当に閉じたからですか?
これらの手順をさまざまな方法で並べ替えてみましたが、うまくいきませんでした。誰にも指針がありますか?
私の問題を示すスクリプトの非常に単純化されたバージョンがここに投稿されています: http://pastebin.com/wSFA2DKM Windows 7 64 ビット、Python 2.7.5 32 ビット