我正在尝试使用wxpython开发一个gui,它有3-4个笔记本面板,其中一个面板(主面板)调用另一个名为abc.py的python脚本。在这个abc.py中,我同时运行多个(>10)线程。当我点击主面板上的run按钮时,它会同时启动这些abc.py脚本线程。这里我面临的问题是我的wxpython笔记本会在“当我点击run按钮并连接所有线程”之间挂起时间。在此期间,我无法控制面板上的其他按钮,也无法在面板之间切换。我的窗户在这段时间里被冻结了。有什么问题吗?如果有人能引导我走上正确的道路,避免这个问题,我会非常感激的。谢谢你!
发布于 2015-02-17 15:05:05
您还需要将对abc.py的调用(我想是用popen )包装到一个线程中,否则GUI将被阻塞。当外部脚本中的进程正在收集它的答案时,您必须以线程安全的方式返回它(重要!)敬wxPython。
一个更好的方法是从abc.py导入,如果可能的话,然后在长时间运行的线程中旋转导入的对象。
有关如何与后台线程安全通信的说明,请参阅wxPython维基。我个人认为最后一个例子是最容易理解和实现的。
https://stackoverflow.com/questions/28557816
复制相似问题