如何在IDLE中停止Python程序执行

14

我有一个Python脚本,它的最后一条指令是plt.show()。当它运行时,IDLE就会在最后一条指令之后停顿。我能得到图片但无法得到提示符。

对于其他脚本,我通常使用ctrl-c来停止程序(有时不会立即生效),但是我如何通过plt.show()获取提示符?Ctrl-c无效...

是否有其他方法来停止程序?

这是在Windows上的IDLE,如果有区别的话。


2
一些选项在这里:https://dev59.com/Z0jSa4cB1Zd3GeqPHraB - mechanical_meat
4个回答

7

我在使用Windows时,使用IDLE和matplotlib遇到了这个问题。 我不知道确切的原因,但是通常Ctrl-c几次就可以解决。 如果这对您不起作用,您可以使用普通解释器,而不是将绘图直接写入屏幕,而是写入文件。

这是IDLE不像正常Python脚本或解释器会话的那些(丰富)时间之一。 因此,我通常避免使用IDLE。


不幸的是,Windows 上的选项并不太好。我直接使用交互式解释器(尽管 cmd.exe 不太友好),并从 gvim 中调用 Python 运行脚本。许多编辑器和集成开发环境可以直接调用 Python,其中许多在 http://wiki.python.org/moin/IntegratedDevelopmentEnvironments 上列出。iPython 可能会遇到与 IDLE 相同的一些问题,但我怀疑它会竭尽全力使 matplotlib 发挥作用(我自己从不使用它,所以不能保证)。 - Mike Graham
当在IDLE的Shell中按下^C时,Shell会向执行进程发送消息以在那里引发中断。大多数情况下,如果直接在Python下运行时按下^C,则会失败。有完全独立于IDLE的原因,导致Python无法始终优雅地停止并在^C中断信号上发出>>>提示。 - Terry Jan Reedy

7

Ctrl+F6(重新启动shell)

或者选择Shell->重新启动shell


2

我在 Canopy Python 编辑器中遇到了同样的问题,我能够通过按下 CTRL+.("点"按钮)来中断 python 会话。希望这有所帮助,或者他们可能以类似的方式处理事情。


2
当你使用plt.show()时,Python子进程会进入GUI工具包的事件循环并阻塞,直到事件循环退出。当它退出时,你会得到提示符。
如果你使用的是TkAgg后端,在按下Ctrl+C后,你需要将鼠标移动到图形上才能停止事件循环。(Tkinter有其怪癖)
另外,IdleX提供了使用EventLoop.py扩展在IDLE中支持Matplotlib的功能。你可以在不使用plt.show()的情况下显示和交互图形。只需确保在生成图形之前设置plt.interactive(True)即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接