1

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

4

1 回答 1

0

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

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

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

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

通过这样做,您的 UI 在后台进行计算时保持响应。

于 2013-02-14T11:36:44.380 回答