我用PyQt创建了一个GUI,它实现了“开始”和“停止”按钮。 当我点击“开始”时,会启动一个巨大的python脚本。 “停止”的功能必须结束这个python脚本,但是当我启动它运行的脚本时,我无法阻止它。我甚至无法激活GUI上的任何其他内容,我也没有得到任何反应。所以我必须等待很长时间,直到python脚本结束。 如何实现这些方法,以便即使在我想要的时候也可以使用“停止”按钮中断脚本?
答案 0 :(得分:0)
由于您在QButton.clicked信号中执行了所有操作,因此GUI会锁定,直到您退出该函数。
我在一个小项目中使用的解决方案是将其分成GUI和工作进程。
使用multiprocessing.Process进行处理,并让结果通过multiprocessing.Pipe发送。 该工作者还有第二个管道来接收命令(我的项目只使用一个命令 - 退出)
在GUI中,您可以创建2个管道:一个用于结果,一个用于命令。 使用两个管道初始化worker并启动该过程。 下一步是让QTimer轮询管道以显示结果并显示它们。
通过这样做,您的用户界面会在后台进行计算时保持响应。