我使用以下代码来检查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()
答案 0 :(得分:2)
它不起作用,因为Tkinter不支持多线程。与Tkinter小部件交互的所有内容都需要在主线程中运行。如果要使用多线程,请将GUI放在主线程中,将其他代码放在工作线程中,并使用线程安全队列在它们之间进行通信。