2013-02-14 294 views
1

我使用PyQt创建了一个实现按钮“开始”和“停止”的GUI。 当我点击“开始”一个巨大的Python脚本启动。 “停止”的功能必须结束这个python脚本,但是当我启动脚本时,它会运行,我无法阻止它。我甚至不能在GUI上激活其他任何东西,我也从中得不到任何反应。所以我必须等很长时间,直到python脚本结束。 如何实现这些方法,以便即使在我想要时也可以用“停止”按钮中断脚本?如何停止正在运行的python脚本

+0

向我们展示一些代码。脚本如何运行?您可能希望使其成为与界面分离的线程。图形用户界面与简单的启动和停止命令行脚本的工作方式不同,也许这仍是您需要习惯的方式? – Evert 2013-02-14 10:36:54

回答

0

由于您在QButton.clicked信号中执行了所有操作,因此您的GUI将锁定,直到您退出该功能。

我在一个小型项目中使用的解决方案是将它分解为一个GUI和工作进程。

使用multiprocessing.Process进行处理,并通过multiprocessing.Pipe发送结果。 工作人员还有第二个管道来接收命令(我的项目只使用一个命令 - 退出)

在GUI中,创建2个管道:一个用于结果,一个用于命令。 使用两个管道初始化工作人员并启动该过程。 下一步将是让QTimer轮询管道的结果并显示它们。

通过这样做,您的UI保持响应,而计算发生在后台。

相关问题