2012-07-28 69 views
1

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

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

但是,当我在新线程root = Tk(); root.mainloop()root.event_generate("<<my-event>>")在主线程中,我得到堆栈溢出。当我交换线程时(主线程中的root = Tk(); root.mainloop()和新线程中的root.event_generate("<<my-event>>")),然后再次运行。

在我尝试生成事件之前,我已经注意到根完全被解析(也是空闲的)。

任何想法如何让这个设置工作?

(我使用Python 3.2.3)

回答

1

找到自己的答案:只放root.mainloop()在辅助线程,保持root = Tk()在主线程。

+0

该死的,Linux和OS X要求tkinter只能在主线程中运行:http://stackoverflow.com/a/1835036/261181 – Aivar 2012-07-31 18:23:24

相关问题