当tkinter在新线程中运行时使用`event_generate`

时间:2012-07-28 20:11:33

标签: events tkinter

我需要为在单独线程中运行的tkinter窗口生成虚拟事件。从非gui线程调用event_generate应该是安全的,并且当tkinter在主线程中运行并且事件在另一个线程中生成时,它运行良好。

由于某种原因,我需要生成事件的语句在主线程中运行(更具体地说,我希望这些语句位于模块的顶层)。

但是,当我在主线程中的新线程和root = Tk(); root.mainloop()中执行root.event_generate("<<my-event>>")时,我会发现堆栈溢出。当我交换线程(主线程中的root = Tk(); root.mainloop()和新线程中的root.event_generate("<<my-event>>"))时,一切都会再次起作用。

在尝试生成事件之前,我已经注意到root是完全构建的(也是空闲的)。

有关如何使此设置正常工作的任何想法吗?

(我正在使用Python 3.2.3)

1 个答案:

答案 0 :(得分:1)

自己找到答案:只在{2}中加入root.mainloop(),在主线程中保留root = Tk()