当线程 运行 时,wxpython 笔记本面板挂起

wxpython notebook panel hangs when threads are running

我正在尝试使用 wxpython 开发一个图形用户界面,它有 3-4 个笔记本面板,其中一个面板(主面板)调用另一个 python 脚本 abc.py。在这个 abc.py 中,我同时 运行 宁多个(> 10)个线程。当我点击主面板上的 运行 按钮时,它会启动 abc.py 脚本的这些同步线程。 我在这里面临的问题是我的 wxpython 笔记本在以下时间挂断:"when I hit run button and upto all the threads are joined"。在此期间,我无法控制面板上的其他按钮,也无法在面板之间切换。我的 window 被冻结了这段时间。 可能是什么问题呢?如果有人可以指导我采取正确的方法来避免这个问题,那么我将非常感激。谢谢..!!!

您还需要将对 abc.py 的调用(我想是 popen)包装到一个线程中,否则 GUI 将阻塞。当外部脚本中的进程正在收集其答案时,您必须以线程安全的方式(重要!)将其取回 wxPython.

更好的方法是从 abc.py 导入,如果可能的话,然后在长 运行 线程中旋转导入的对象。

有关如何进行线程安全通信的说明,请参阅 the wxPython wiki。我个人觉得最后一个例子最容易理解和实现。