0

我正在尝试使用具有 3-4 个笔记本面板的 wxpython 开发 gui,其中一个面板(主面板)调用另一个名为 abc.py 的 python 脚本。在这个 abc.py 中,我同时运行了几个(> 10)线程。当我点击主面板上的运行按钮时,它会启动 abc.py 脚本的这些并发线程。我在这里面临的问题是我的 wxpython 笔记本在以下时间之间挂起:“当我点击运行按钮并且所有线程都加入时”。在此期间,我无法控制面板上的其他按钮,也无法在面板之间切换。我的窗口在这段时间内被冻结了。可能是什么问题呢?如果有人能指导我找到避免这个问题的正确途径,那么我将非常感激。谢谢..!!!

4

1 回答 1

1

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

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

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

于 2015-02-17T15:05:05.273 回答