不希望我的 GUI 卡住,我决定使用线程进行文件操作。目前我正在使用 thread.start_new_thread(self.openFile, (filepath, self.openedFile)) 来执行此操作,其中 self.openedFile 是我的回调方法。在 self.openFile
内部,它只是使用 callback(success)
调用。
但不幸的是,我不知道如何在主线程而不是新创建的线程中执行我的回调。这是必需的,因为无法从另一个线程修改 GUI。
我非常感谢您的所有帮助!
最佳答案
拥有 GUI 的线程必须定期检查 Queue.Queue
实例,其他线程可以在该实例上放置工作请求(例如回调函数及其参数)。
在 GUI 的主循环中插入此类检查的难易程度 100% 完全取决于您所使用的 GUI 框架。
例如,如果您使用 Tkinter,小部件的 after
方法可让您执行此类定期检查,如 Run an infinite loop in the backgroung in Tkinter 中所述。 .
关于Python:在主线程中执行回调方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28254015/