私は GTK2 (技術的には pyGTK) でアプリケーションを作成しており、いくつかの長い操作を実行します。
メイン スレッドで長い操作を実行すると (これは良い考えではありません)、アプリケーションが応答しなくなります。
これの望ましい部分は、ユーザーがテキスト入力ウィジェットを変更できないようにする部分ですが、望ましくない部分は、ウィンドウ自体が再描画されないことです。
これを行う別の方法はありますか?
コストのかかるプロセス中に GUI がユーザーの操作を必要としない場合、GUI をメイン スレッドに配置できない理由はありません。ループ内で UI を手動で更新することもできます (再描画、ウィンドウの移動/サイズ変更の処理など)。
"sensitive"
プロパティを False に設定して、ウィジェットを無効にします。widget.set_sensitive(False)
n
) に、次のように UI を更新しますwhile gtk.events_pending(): gtk.main_iteration()
。スレッドを使用する場合は、PyGTK FAQ へのリンクを含む ergosys からのコメントが役立ちます。GTK+ リファレンス ドキュメントのスレッドも読む必要があります。