python - Python Tkinter程序崩溃时忘记了()

标签 python multithreading python-2.7 crash tkinter

在我的程序中,我想在按钮上使用forget()。现在,如果我尝试这样做,程序将崩溃。我知道它与线程有关,但是我还没有找到解决之道。提前致谢。这是我的示例代码:

import Tkinter as tk
import thread

window = tk.Tk()

def ok():
    pass

    def voice():
        button1.forget()
        print("If you see this, it works!")

    thread.start_new_thread(voice,())

button1=tk.Button(command=ok, text="PRESS")
button1.pack()

window.mainloop()

最佳答案

除了创建对象的线程外,您不能从任何线程访问tkinter对象。换句话说,您不能从线程中调用button1.forget()并期望它可靠地工作。

普遍接受的解决方案是让您的线程将信息写入线程安全的队列,并让您​​的GUI线程定期轮询该队列,拉出一个项目,然后执行该项目所要求的一切。

关于python - Python Tkinter程序崩溃时忘记了(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27321126/

相关文章:

python - 如何将 Python bool 对象转换为 C int(或 C++ bool 值)(Python C API)

java - 为什么我不能在java中同步实例 block ?

无法计算 C 中插槽的回合数

python - 如何比较 2 个不同 csv 文件中不同列的值?

python - PyYAML : Control ordering of items called by yaml. 加载()

python - 在 Python 中使用 OpenCV 检测掌纹

python - jinja2 - 如何在 if 语句中放置一个 block ?

linux - 会不会是/etc/passwd在后台添加/删除了用户?

python - 浏览器模拟——Python

c++ - 如何让一个线程等到所有其他线程都完成读取才能写入