スレッドの終了を待っている間に Tkinter GUI がフリーズしないようにするにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-03 05:22:03
オリジナル
571 人が閲覧しました

How to Prevent Tkinter GUI from Freezing While Waiting for a Thread to Finish?

スレッドの完了を待機中に tkinter GUI がフリーズ/ハングします

この例では、メインスレッドが待機しているため、ボタンが押されたときに GUI がフリーズしています。 Thread(target = self.threaded_function) によって作成されたスレッドは、続行する前に終了する必要があります。 GUI の応答性を維持するには、メイン スレッドのブロックを避けることが重要です。

スレッドと GUI の間でデータを渡すためにキューを使用する代替実装を次に示します。

queue = Queue()

def threaded_function():
    while True:
        if not queue.empty():
            item = queue.get()
            print(item)
            # Do other processing here

def helloCallback():
    queue.put("asd")

m = magic()
B = tkinter.Button(top, text = "Hello", command = helloCallback)
B.pack()
top.mainloop()

# Start the thread in the background
t = threading.Thread(target = threaded_function)
t.start()
ログイン後にコピー

この例では、この実装では、threaded_function がバックグラウンドで実行されている間、GUI スレッドは応答し続けます。キューは、2 つのスレッド間でデータを通信するために使用されます。 helloCallback 関数が呼び出されると、項目がキューに追加され、その後、threaded_function によって取得されて処理されます。

以上がスレッドの終了を待っている間に Tkinter GUI がフリーズしないようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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