ホームページ  >  記事  >  バックエンド開発  >  スレッドの終了を待っている間に Tkinter GUI がフリーズしないようにするにはどうすればよいですか?

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

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-03 05:22:03572ブラウズ

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。