How to stop Python program execution in IDLE
Asked Answered
M

4

14

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.

Marita answered 17/3, 2010 at 7:4 Comment(1)
some options here: stackoverflow.com/questions/1219394Gelsenkirchen
A
7

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.

Applesauce answered 17/3, 2010 at 7:13 Comment(2)
Unfortunately, the options on Windows aren't great. I use the interactive interpreter directly (despite cmd.exe not being all that nice) and call Python from gvim to run scripts. Any number of editors and IDEs can call Python directly, and many of them are listed on wiki.python.org/moin/IntegratedDevelopmentEnvironments . iPython can suffer from some of the same problems of IDLE, but I suspect it goes out of its way to make matplotlib work (I never use it myself, so I can't promise so).Applesauce
When one presses ^C in IDLE's Shell, the Shell sends a message to the execution process to raise interrupt there. Most of the time when that fails, it it would have failed if one had hit ^C while running directly under Python. There are reasons completely independent of IDLE why Python cannot always gracefully stop and emit a >>> prompt upon a ^C interrupt signal.Sillsby
O
8

Ctrl+F6 (Restart shell)

or Shell->Restart Shell

Onassis answered 16/12, 2013 at 16:17 Comment(0)
A
7

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.

Applesauce answered 17/3, 2010 at 7:13 Comment(2)
Unfortunately, the options on Windows aren't great. I use the interactive interpreter directly (despite cmd.exe not being all that nice) and call Python from gvim to run scripts. Any number of editors and IDEs can call Python directly, and many of them are listed on wiki.python.org/moin/IntegratedDevelopmentEnvironments . iPython can suffer from some of the same problems of IDLE, but I suspect it goes out of its way to make matplotlib work (I never use it myself, so I can't promise so).Applesauce
When one presses ^C in IDLE's Shell, the Shell sends a message to the execution process to raise interrupt there. Most of the time when that fails, it it would have failed if one had hit ^C while running directly under Python. There are reasons completely independent of IDLE why Python cannot always gracefully stop and emit a >>> prompt upon a ^C interrupt signal.Sillsby
T
2

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.

Trapp answered 23/11, 2011 at 0:1 Comment(0)
P
2

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

Paulie answered 1/7, 2015 at 2:50 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.