ホームページ > バックエンド開発 > Python チュートリアル > PyQt GUI のフリーズを回避する方法: time.sleep の代替手段?

PyQt GUI のフリーズを回避する方法: time.sleep の代替手段?

DDD
リリース: 2024-11-25 03:11:12
オリジナル
870 人が閲覧しました

How to Avoid Freezing Your PyQt GUI: Alternatives to time.sleep?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート