0

USRP に接続されているウォーターフォール シンクを組み込んだ pyqt4 を使用して、Python で GUI を作成しようとしています。問題は、データが継続的にウォーターフォール シンクに表示され、GUI がフリーズし、その間他のボタンを使用できないことです。私はスレッドを使用することを確認していましたが、今まで私が理解していたのは、スレッドには最後に結果を返す関数だけを配置できるが、継続的に結果を返す関数は配置できず、メイン GUI で表示したいということです。 .

ウォーターフォール シンクからの継続的な結果を表示し、メイン GUI をフリーズしないようにする方法を教えてください。

4

2 に答える 2

0

方法はいくつかありますが、基本的には

  1. ウォーターフォール シンクを、GUI が定期的に実行できる作業のチャンクに分割します。たとえば、GUI が呼び出す関数でウォーターフォール シンクを継続的に更新する代わりに、"短い" 更新 (1 つの "タイム ステップ") のみを行い、関数が直後に戻るようにします。QTimerを介して定期的に呼び出される関数を作成します。
  2. QThread インスタンスでインスタンス化された QObject を使用して、ウォーターフォール シンクを別のスレッドで実行します。シンク関数が一定の間隔で、たとえばウォーターフォール更新の「タイムステップ」ごとに信号を発するようにします。
于 2014-10-02T03:10:33.337 に答える
-1

QThreadからクラスを派生させることができます。run 関数で処理を行い、データを何らかのデータ構造に保存します。このスレッドをメイン スレッドから開始し、適切な同期を使用してこのデータ構造からデータを取得します。この方法では、処理によってメイン UI スレッドがフリーズすることはありません。

参考文献

PyQt の QThread を使用したバックグラウンド スレッド

PyQt で QThread を使用する正しい方法の例は?

于 2014-10-01T09:47:16.610 に答える