正在关闭线程窗口



我使用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的例子

相关内容

  • 没有找到相关文章

最新更新