1

GUI が応答しなくなるのを防ぐために、PyQT4 GUI の高価なルーチンをワーカー QThread にアウトソーシングすることに成功しました。ただし、ワーカー スレッドの処理が終了するまで GUI を待機させて、独自のコードを実行し続けたいと思います。

すぐに頭に浮かぶ解決策は、完了時にスレッドにシグナルを発行させ (QThreads は既にこれを行っていることを理解しています)、残りのコードを実行する前にメイン ウィンドウでこのシグナルを探すことです。これはハッキングされていますか?

QThread が here で説明されている wait() 関数を提供していることは知っていますが、使用方法は不明です。これをメインスレッドで呼び出したいと思っているのですが、アプリで呼び出す方法がわかりません...?

4

2 に答える 2

1

これは本当に悪い計画です。「スレッド アクション前」と「スレッド アクション後」を分割します。「スレッド後アクション」は、スレッドがシグナルを送ることができる QueuedConnection によって起動されるスロットである必要があります。

GUI イベント ハンドラで待機しないでください。

于 2012-07-27T21:14:37.857 に答える
0

GUI スレッドwait()がワーカー スレッド オブジェクトの関数を呼び出した場合、ワーカー スレッドがそのメイン関数から戻るまで戻りません。これはあなたがしたいことではありません。

シグナルとスロットを使用して説明したソリューションは、私には十分に理にかなっているようです。または、ブール値を使用することもできます。

于 2012-07-27T21:15:49.427 に答える