GUI のフリーズ: PyQt アプリケーションにおける time.sleep の代替手段
PyQt アプリケーションでは、フリーズ効果により time.sleep を使用すると問題が発生することがよくありますGUIスレッド上で。これに対処するには、代替ソリューションが必要です。
遅延アクションに QTimer を使用する
1 つのオプションは、QTimer を使用することです。ただし、この方法ではタイマーを別の関数にリンクする必要があるため、遅延後に現在の関数を続行したい状況には適していない可能性があります。
QTest.qWait: ノンブロッキングスリープ関数
代替ソリューションは、PyQt4 モジュールの QTest.qWait を使用することです。この関数は、GUI スレッドをブロックせずに time.sleep の動作をシミュレートします。構文は次のとおりです。
from PyQt4 import QtTest QtTest.QTest.qWait(msecs)
ここで、「msecs」は必要な遅延をミリ秒単位で表します。 time.sleep とは異なり、QTest.qWait を使用すると、遅延中に GUI の応答性を維持できます。
使用例
QTest.qWait の使用法を説明するには、次のことを考慮してください。コード スニペット:
import sys from PyQt5.QtWidgets import QMainWindow, QLabel, QWidget, QVBoxLayout class Example(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): self.label = QLabel("Waiting...") self.setCentralWidget(self.label) QtTest.QTest.qWait(2000) self.label.setText("Finished waiting") if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() ex.show() sys.exit(app.exec_())
この例では、アプリケーションが 2 秒間待機している間、GUI は応答し続けます。 QTest.qWait を使用して数秒。遅延後、ラベルのテキストが更新されます。
以上がPyQt GUI のフリーズを回避する方法: time.sleep の代替手段?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。