闭合螺纹Tkinter wind

2024-05-13 08:55:31 发布

您现在位置:Python中文网/ 问答频道 /正文

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

但是,当我打电话给监视器关闭()方法从启动监视器线程的主程序开始,窗口就会冻结(例如,单击“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()

Tags: self程序closeinittkinter可视化defroot
1条回答
网友
1楼 · 发布于 2024-05-13 08:55:31

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

不过,它在消息传递方面工作得很好,只是不适用于线程的直接调用。所以您需要添加一些通过队列传递的消息。在

看看http://effbot.org/zone/tkinter-threads.htm中的一个例子。在

相关问题 更多 >