Tkinter和多线程

时间:2013-02-24 22:19:56

标签: python multithreading tkinter

我使用以下代码来检查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()

1 个答案:

答案 0 :(得分:2)

它不起作用,因为Tkinter不支持多线程。与Tkinter小部件交互的所有内容都需要在主线程中运行。如果要使用多线程,请将GUI放在主线程中,将其他代码放在工作线程中,并使用线程安全队列在它们之间进行通信。