The Things I Hate About IDLE That I Wish Someone Would Fix
14) IMPROVEMENT: Get rid of the Format > “Strip trailing whitespace” option from the menu, and just have an option where the editor can do this automatically when you save the file.
15) MODERNIZATION: The Save dialog asks “Do you want to save this untitled document before closing?” and then presents you with Yes, No, and Cancel buttons. Update this to use verbs instead of yes/no: Use Save, Don’t Save, and Cancel.
16) ANNOYANCE: The Windows shortcuts for IDLE don’t have the version in their name. This wasn’t a problem for Windows XP and before, where you just go to the Python shortcut folder (which does have the version info in the name) and select IDLE. But in Windows 7, to launch a program you click Start and simply type “IDLE” to bring up all the IDLE-named shortcuts. Before I changed the shortcut names manually, it was impossible for me to tell which Python version’s IDLE I would be starting:

One last thing, I think it was a stroke of genius to include a small IDE bundled with the interpreter, especially one that was written in Python itself using the included GUI toolkit. It shows that the Python devs care not just about attracting seasoned developers but also about drawing new people into programming which (as PHP showed us) will turn into remarkable market share later on.
I also understand why IDLE isn’t at the top of the priority list: people code away with it for a while, and then move on to a bigger and better IDE. It’s a disposable IDE (though I mean that in the nicest possible way). But a few tweaks would improve its usability in that mode of improvement where people may not notice the quality, they just stop noticing any hangups. “It just works.”
Antoine Pitrou:
November 29th, 2011 at 2:27 pm
Problem is, IDLE is not maintained by anyone. The couple of persons who will occasionally claim they *will* improve it “real soon now” generally don’t do anything at all. Several people will yell, however, if you propose to kick it out of the standard library.
Bottom line, if you want to contribute, you are fully welcome. You may want to post on http://mail.python.org/mailman/listinfo/idle-dev but it is populated by these same people I talked about above.
Nick Coghlan:
November 29th, 2011 at 5:37 pm
I added a link back to this post from the CPython bug tracker: http://bugs.python.org/issue13504
WM:
November 29th, 2011 at 7:44 pm
Good point!
Hope the develop team would adopt these suggestions.
MrValdez:
November 29th, 2011 at 10:05 pm
I’m a professor teaching Python. I want to add what my classroom problems about IDLE as well:
1. ANNOYANCE: input() doesn’t play well when re-running a script when the script is already running.
Here’s a use case. A student types this program in IDLE:
–
x = input(“Typ a word:”)
print (x)
–
They run the code. In the shell window, the student would notice the mispelling. Without exiting the shell window, they would go edit the code and then press F5.
The shell would still be running the previous code instead of restarting.
In some of my exercises, the students would sometimes think their code are broken when in reality, they already got the solution. They were just running the older instance.
This becomes common enough that I ask my students to exit the shell window before running their scripts.
2. ANNOYANCE: Turtle does not play well with IDLE.
Almost similar to pygame, if a student runs a turtle script without quitting the turtle window, the first turtle window would crash.
Like in my 1st item, I just ask my students to exit the window before re-running their code.
3. FEATURE: A syntax highlighting for blocks of code would be nice to have.
Also, a different highlight colors for tabs and spaces would help establish the idea that students really shouldn’t mix the two in their code.
4. UNFRIENDLY: Forcing a kill of a running script by clicking the X close button brings up the scary message of “killing” something.
dave cortesi:
November 29th, 2011 at 10:26 pm
You missed a couple. On Mac OS X, you click in a window to bring it back to the front. So if Idle is behind another window, and you click anywhere in it to bring it to the front, that random spot is where it also sets the cursor. So unlike any other mac app, you have to be extremely careful where you click — either exactly in line with or below the last prompt, or on the title bar. Anywhere else and you can’t type and have to click again lower down.
Two, if you copy text from any other app and paste into Idle window on the prompt line, it locks up hard and has to be force-quit.
In fact I can’t imagine how or why you’ve used it to teach kids with – when Wing IDE 101 is available free.
Horst JENS:
November 30th, 2011 at 12:41 am
i fully agree ! Very good blog posting. I use the editor geany for my students as soon as possible.
http://pythongamebook.wordpress.com/2011/11/30/idle-vs-geany/
Lennart Regebro:
November 30th, 2011 at 1:02 am
IDLE is so weird and works so differently from anything else that I find it incomprehensible, and as such probably not a good teaching tool at all.
David Beazley:
November 30th, 2011 at 2:52 am
I use IDLE a lot in training classes and couldn’t agree more with this post. I would add to this list that using IDLE on Mac OS-X is an absolute embarrassment right now. If you try it with the preinstalled Python, don’t expect it to work for long (frequent freezes and beachballs requiring “Force Quit”). Even if you perform all of the magic incantations and upgrades of Tcl/Tk to make it work, it’s slow, looks horrible and barely seems to work. Alas, no time to dig into the code to try and fix it ;-(.
Rene Dudfield:
November 30th, 2011 at 4:33 am
Excellent usability suggestions!
Anyone know if the pygame crash can be fixed on the pygame side? That’s at least one thing I could look into. Here is the issue on the pygame issue tracker: https://bitbucket.org/pygame/pygame/issue/99/idle-crashes-when-you-quit-a-pygame-game
Also I wonder what the IDLE code base is like? Is there any architecture or development documentation for it? I can’t find any.
IDLE-dev Mailing list (maybe good to post your blog here):
http://mail.python.org/mailman/listinfo/idle-dev
The source lives in Lib/idlelib I think.
http://hg.python.org/cpython/file/74d182cf0187/Lib/idlelib
There’s a CREDITS.txt in the Lib/idlelib directory with maintainers mentioned.
Also, if any fixes are made soon, then they might be able to get into the python 3.3 release. But people using old pythons will be stuck with the bugs forever :(
cheers,
anatoly techtonik:
November 30th, 2011 at 9:03 am
Have you tried Spyder’s light mode for the console? http://www.youtube.com/watch?v=srQYs47jZvw
I wish some subset of Spyder could come battery included for Python. I’ve raised the thread about replacing IDLE with “something else” two years ago, but there was no alternative http://thread.gmane.org/gmane.comp.python.devel/108760/
With this post (and Python 3 in mind) the problem seems actual once more, but replacing IDLE will require distributing some other framework (like Qt + PySide) on Windows instead of Tkinter. Because the problem is not in IDLE, but in underlying platform, which is not used/supported anymore.
Ghislain Hivon:
November 30th, 2011 at 9:27 am
I think dreampie could be useful for new user.
http://dreampie.sourceforge.net/
It split the editor and the history of commands and results.
I come with syntax highlight.
Tal Einat:
November 30th, 2011 at 10:47 am
Hello, retired IDLE developer here.
I used IDLE for several years, both at work and for hobby Python programming. During this time I hacked at IDLE quite a bit. I fixed a few small things and also worked on major improvements such as auto-completion, extension configuration and improved search functionality.
I found development to be an uphill battle during that time, with the Python devs hardly finding the time to review my patches and provide some guidance once every few months. Hardly anyone showed much interest in IDLE back then.
Years passed, and a few others invested significant development efforts into fixing and improving IDLE. However, many of these changes have yet to be merged into the version of IDLE distributed with Python.
Finally, about a year ago (maybe more?), I was given commit rights to assimilate improvements and fixes. However, since I was not using IDLE any longer, I simply couldn’t find the time for this. Nobody has stepped up in my place (though admittedly I never officially “resigned” — I always hoped to find the time…).
In any case, thanks for taking the time to detail the bugs and annoyances you’ve found while teaching with IDLE. I hope this will motivate someone to breath some life back into IDLE.
sean wolfe:
December 1st, 2011 at 7:51 am
Hey nice article, I just found it. I agree with you on a lot of the complaints.
Oh and hello Tal, I remember you replied to some postings of mine on idle-dev a few years back. Nice to see you around!
Anyhow, I also love IDLE and I am thinking of maybe getting around to hacking some at it. This article is added motivation so thanks!
Tom Johnson:
December 1st, 2011 at 6:36 pm
Number 5 is definitely a good one. I learned how to program reading Invent With Python, and I typed most of the hangman game into the python shell before I realized something was wrong.
With regard to number 12, on adding line numbers, there is some useful code at http://tkinter.unpythonic.net/wiki/A_Text_Widget_with_Line_Numbers. I used a modified version of that to attempt to add line numbers to my local copy of IDLE about eight months ago, but ran into some strange errors. I’m a much more proficient programmer now, so I might try again, and submit the code to the python people.
One thing about IDLE I find very confusing is creating extensions. Documentation is negligible, and only covers creating an extension, without mentioning how the extension can interface with IDLE. If a simple “Hello World” extension were to be distributed with python that would be very helpful.
Dan Patton:
February 11th, 2012 at 3:01 pm
I Used Python a few years ago and had several issues of figuring out modules and now Ive started back and everything seems to be working great for me in python 3.2.2 version. I may even teach a basic class in the future once I have all my ducks in a row. I would love to do development for Python some day
Ann:
May 21st, 2012 at 4:03 pm
“Auto-Copy-On-Highlight”
If you do this, add a clipboard icon to the cursor when hovering over that text, so it’s very obvious what selecting that text does. Don’t make programs behave weirdly in different parts of the screen without a visual warning.
Joel Nothman:
May 30th, 2012 at 4:56 pm
Part of the problem is that IDLE’s releases are tied into those of CPython, despite not having any of the same compatibility issues involved in releasing a changed language or standard library.
Roger:
August 9th, 2012 at 1:01 pm
This is an excellent list of criticisms of IDLE.
Many of these issues are being addressed. See http://bugs.python.org/issue13504
will:
August 10th, 2012 at 5:18 am
My IDLE constantly fails to come up, talking about being block by a firewall .I find my self having to restart my computer. Admittedly, it seems to only happen on Python 2, but I need that for pygame.
sokoban:
November 6th, 2012 at 11:30 pm
I just started writing a Sokoban clone using IDLE.
I would like to show the line numbers, and search the internet for an answer. It is frustrated to find out there is no way to do this.
Reply from Al:
Yes, one of the frustrating things about IDLE is that you can’t show line numbers in the editor. You can try a different editor, such as Notepad++.
Michael Bean:
March 3rd, 2013 at 3:00 pm
Quote: “When my students’ code would raise some exception, they thought they could correct it by scrolling back up, deleting the original code, and then re-typing it out (as if the interactive shell were a word processor).”
I’m new to Python, and I literally just discovered this tip by chance which may be useful to those students (it works in XP anyways):
If you click on the text you want to edit and hit the Enter key, it copies the line to the active >>> prompt where it can be edited. It’s much easier than copy-paste or retyping!
Neubie:
May 7th, 2013 at 3:18 am
Great article and spot on! Especially for people like me new to Python.