Skip to main content
 首页 » 编程设计

python之wxPython 应用程序在执行期间卡住

2025年05月04日13lexus

我正在使用 python 2.7 和 wxpython 2.8 创建一个应用程序,它应该在文件列表上执行一个长循环(几个小时)。

我编写了一个按钮,当我按下它时应该中断循环,但在我启动应用程序的那一刻,它卡住了并且在循环结束之前我无法以任何方式进行交互。 我还尝试使用 time.sleep 添加一小段 sleep 时间,最多 1 秒,这对速度非常不利并且无法解决问题。

有没有办法“在后台”运行这个循环,这样用户仍然可以修改一些参数,更重要的是停止循环?

我可以说循环不需要很多资源,它只需要很多时间,所以我不明白为什么它会卡住。

在此先感谢您的帮助!

请您参考如下方法:

在这类问题的标准解决方案中使用线程。 Processes and Events下的wxPython demo | Threads 有一个使用线程的工作示例。

从 wxPython(和大多数其他 guis)运行线程时会出现一些问题,因此您可能想阅读示例中的注释,也许还想阅读 wiki 以了解发生了什么,等等。特别是,wxPython 需要从主线程运行,所以你的文件处理在不同的线程中进行,然后你的文件处理应该使用 wx.PostEvent 或 wx.CallAfter 之类的东西与主线程通信。