Python:在主线程中执行回调方法

标签 python multithreading python-2.7

不希望我的 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/

相关文章:

python - 在 Python shell 中执行带有参数的文件

python - 如何访问 Django 中的低级 psycopg2 连接?

android - 在一个线程中使用等待和通知

python - 无法使用 wxPython 打开在 folium 中生成的本地 HTML 文件

python - 在 Django 教程中使用模板

java - 即使在其他线程中启动,帧也会卡住

c# - 将Form.Owner设置为来自其他线程的表单

python - win32 上的条目消息 : [MSC v. 1500 64 位 (AMD64)]

python - 需要帮助找到一种使用集合返回偶尔出现一次的列表并仍保持顺序的方法吗?

python - 如何将 Python 数组转换为 SymPy 矩阵来计算行列式?