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:

17) NEW FEATURE: Ctrl-Scroll to change font size. (UPDATE from 6/4/2013) Much like how holding down Ctrl and scrolling the mouse wheel will zoom in and out, it’d be nice to have IDLE change its font size by doing this.

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.”

UPDATE (2014/2/17) – Also, it’d be nice if you could specify command line arguments when you run scripts in IDLE. (Hmmm… maybe this is going too far with the feature set though.)

Page 3 of 3 | Previous page

24 comments on this post.
  1. Antoine Pitrou:

    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.

  2. Nick Coghlan:

    I added a link back to this post from the CPython bug tracker: http://bugs.python.org/issue13504

  3. WM:

    Good point!
    Hope the develop team would adopt these suggestions.

  4. MrValdez:

    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.

  5. dave cortesi:

    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.

  6. Horst JENS:

    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/

  7. Lennart Regebro:

    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.

  8. David Beazley:

    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 ;-(.

  9. Rene Dudfield:

    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,

  10. anatoly techtonik:

    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.

  11. Ghislain Hivon:

    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.

  12. Tal Einat:

    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.

  13. sean wolfe:

    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!

  14. Tom Johnson:

    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.

  15. Dan Patton:

    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

  16. Ann:

    “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.

  17. Joel Nothman:

    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.

  18. Roger:

    This is an excellent list of criticisms of IDLE.

    Many of these issues are being addressed. See http://bugs.python.org/issue13504

  19. will:

    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.

  20. sokoban:

    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++.

  21. Michael Bean:

    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!

  22. Neubie:

    Great article and spot on! Especially for people like me new to Python.

  23. HD:

    I really, really hate the fact that you can only paste one line at a time into IDLE. If you paste more than one, only the first line “takes” and the others are silently ignored.

    Also I think that by default the up and down arrow keys should cycle through the command history. You can configure it this way but it’s painful and not something a beginner could figure out unaided.

  24. idlex fan:

    i like the idle but i know there is lots of small problem which make it not very good, the idlex fix some of those problem but it also brought more problem as well…
    the only really good thing about the idle is the code context, it most likely the only reason i am still using the idle with add-ons call idlex

Leave a comment