1

次のコードを使用して、Tkinter がマルチスレッドと連携して動作するかどうかを調べました。しかし、次のコードは機能しません (Gui は実行するとすぐに応答しなくなります)。なぜそれが機能しないのか、誰か説明してもらえますか?

from threading import Thread 
import tkinter as tk

window = tk.Tk()
label = tk.Label(window, text='Hello')
label.pack()

def func():
    i = 1
    while True:
        label['text'] = str(i)
        i += 1

Thread(target=func).start()
Thread(target=window.mainloop).start()
4

1 に答える 1

2

Tkinter はマルチスレッドをサポートしていないため、機能しません。Tkinter ウィジェットとやり取りするものはすべて、メイン スレッドで実行する必要があります。マルチスレッドを使用する場合は、GUI をメイン スレッドに配置し、他のコードをワーカー スレッドに配置し、それらの間でスレッド セーフ キューを使用して通信します。

于 2013-02-24T22:22:28.373 に答える