PyQt で QThread を使用してバックグラウンド スレッドを作成する方法
マルチスレッドは、単一プログラム内で複数のタスクを同時に実行できるようにするプログラミング手法です。 PyQt では、QThread はスレッドを作成および管理する方法を提供するクラスです。これは、メイン GUI スレッドをブロックせずにバックグラウンドで実行する必要があるタスクに役立ちます。
たとえば、ラジオと接続するプログラムがあるとします。無線の主な機能の 1 つはデータを送信することですが、これを継続的に行うには、書き込みをループする必要があります。これにより、メイン スレッドが無線への書き込みでビジー状態になるため、GUI がハングする可能性があります。
これを修正する 1 つの方法は、QThread を使用して、無線への書き込みを処理するバックグラウンド スレッドを作成することです。これにより、メイン スレッドが解放され、GUI の更新を続行できるようになります。
QThread を使用してバックグラウンド スレッドを作成して開始する方法の簡単な例を次に示します。
import sys from PyQt5.QtCore import QThread, QObject class MyThread(QThread): def __init__(self): super().__init__() def run(self): # This code will run in a separate thread while True: # Do something... pass def main(): app = QApplication(sys.argv) # Create a thread instance thread = MyThread() # Start the thread thread.start() # The main GUI event loop app.exec_() if __name__ == "__main__": main()
この例では、 MyThread クラスは QThread のサブクラスです。 run() メソッドは、バックグラウンド スレッドで実行されるコードを定義します。スレッドが開始されると、 run() メソッドのコードがメイン GUI イベント ループと同時に実行されます。
以上がPyQtのバックグラウンドタスクにQThreadを使用してGUIのフリーズを回避するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。