python - Tkinter 和多线程

标签 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()

最佳答案

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

关于python - Tkinter 和多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15057341/

相关文章:

multithreading - 如何在线程中改变 self ?

python - 如何使 threading.Thread start() 调用 run() 以外的方法

android - Android AsyncTask 和 realm.executeTransactionAsync 的区别

Python tkinter, Canvas 不显示

python - 如何更新 Tkinter 标签?

python - 如何通过选择随机变量在 Python 中执行随机事件?

python:围绕第三方类编写包装器

python - python类中的简单线程管理

python - 等长样本的音频分类/'vocoder' thingy

python - Sticky 命令如何影响 Tkinter 中的 python 代码?