不希望我的GUI冻结,我决定使用线程进行文件操作。目前我正在使用thread.start_new_thread(self.openFile, (filepath, self.openedFile))
这样做,self.openedFile
是我的回调方法。在self.openFile
内,只需使用callback(success)
调用。
但遗憾的是我无法弄清楚如何在主线程中执行我的回调而不是新创建的回调。这是必需的,因为无法从其他线程修改GUI。
我真的很感谢你的帮助!
答案 0 :(得分:4)
拥有GUI的线程必须定期检查其他线程可以放置工作请求的Queue.Queue
实例(例如回调函数及其参数)。
在GUI的主循环中插入此类检查是多么容易或多难,这完全依赖于您正在使用的GUI框架。
例如,如果您正在使用Tkinter,则after
窗口小部件方法可让您进行此类定期检查,例如Run an infinite loop in the backgroung in Tkinter所述。