How to stop Python program execution in IDLE

2019-04-06 06:57发布

I have a python script that uses plt.show() as it's last instruction. When it runs, IDLE just hangs after the last instruction. I get the image but I don't get the prompt back.

On other scripts I typically use ctrl-c to break the program (sometimes doesn't work immediately) but how do I get the prompt back with the plt.show()? Ctrl-c doesn't work...

Are there other ways to stop the program?

This is IDLE on Windows, if it makes any difference.

4条回答
劳资没心,怎么记你
2楼-- · 2019-04-06 07:09

When you use plt.show(), the python subprocess enters the GUI toolkit's event loop and blocks until the event loop exits. When it exits, you get the prompt back.

If you are using the TkAgg backend, you'll need to move your mouse over a figure after you press Ctrl+C. That will cause the event loop to stop. (Tkinter has its quirks)

Alternatively, IdleX offers Matplotlib support with IDLE using the EventLoop.py extension. You can display and interact with figures without using plt.show(). Just be sure to set plt.interactive(True) before generating figures.

查看更多
何必那么认真
3楼-- · 2019-04-06 07:13

I have seen this problem with IDLE and matplotlib when using them on Windows. I don't know the exact cause, but Ctrl-c a couple times has typically worked for me. If that doesn't work for you, you can use the normal interpreter instead of write your plot directly to a file instead of the screen.

This is one of those (plentiful) times when IDLE doesn't behave like a normal Python script or interpreter session. Because of this, I usually avoid IDLE.

查看更多
何必那么认真
4楼-- · 2019-04-06 07:13

I had same issue in Canopy Python Editor, and I was able to interrupt python session with CTRL+. ("dot" button). Hope that helps, or they probably do things in a similar ways

查看更多
虎瘦雄心在
5楼-- · 2019-04-06 07:15

Ctrl+F6 (Restart shell)

or Shell->Restart Shell

查看更多
登录 后发表回答