gpt4 book ai didi

python - 关闭线程 Tkinter 窗口

转载 作者:行者123 更新时间:2023-12-03 12:57:04 26 4
gpt4 key购买 nike

我使用 Tkinter 窗口来可视化我的程序的一些输出。窗口是线程的(见下面的基本结构),基本上它工作得很好。到目前为止,我只是在关闭窗口时遇到了麻烦。当我单击“X”按钮关闭窗口时,它可以工作。

但是,当我从启动监视器线程的主程序中调用 Monitor.close() 方法时,窗口只是卡住(例如,它对单击“X”按钮没有反应)并且线程监视器继续运行。因此,主程序不会退出。

因此,目前,我还必须先“手动”关闭窗口,方法是单击关闭按钮,然后单击主程序。不是什么大问题,但如果主程序可以自行关闭窗口,那就太好了。有什么提示吗?

谢谢和最好的问候,

基督教

class Monitor(threading.Thread):

def __init__(self):
threading.Thread.__init__(self)
self.start()

def close(self):
self.root.quit()
self.root.destroy()

def run(self):
self.root=Tkinter.Tk()
self.root.protocol("WM_DELETE_WINDOW", self.close)
self.root.mainloop()

最佳答案

以这种方式使用的 Python 线程和 Tk(inter) 不能很好地混合,因为它们违反了仅从一个线程使用 Tk 的 Tcl/Tk 线程模型。

不过,它在消息传递方面效果很好,但不适用于来自线程的直接调用。所以你需要添加一些通过 Queue 传递的消息。

看看http://effbot.org/zone/tkinter-threads.htm例如。

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com