需求是这样,我有一个主窗口,有自己的事情做,同时需要监视一个文件,如果有了变动就蹦个对话框出来,一开始的想法是 def handler(): dialog = gtk.MessageDialog(...) dialog.run() dialog.destroy() gobject.threads_init() gtk.gdk.threads_init() gtk.io_add_watch(source, gobject.IO_IN, handler) xxx_window.show() gtk.main() 结果是对话框能显示出来,但是点击ok之后就卡死了,ok按钮也保持在“按下”的状态 后来看到了http://old.nabble.com/Deadlock-problem-when-calling-messagebox-function-with-idle_add-td25027865.html 于是在handler首尾分别加上gtk.gdk.threads_enter() 和 gtk.gdk.threads_leave() 就可以了
久病成医 | Prolonged Illness Makes the Patient a Good Doctor