Easygui project shuts down

Effective March 6, 2013, I am shutting down the EasyGui project.

The EasyGui software will continue to be available at its current location, but I will no longer be supporting, maintaining, or enhancing it.

The reasons for this decision are personal, and not very interesting. I’m older now, and retired. I no longer do software development, in any programming language. I have other interests that I find more compelling. I spend time with my family. I play and promote petanque. Life is good, but it is different.

During the course of my software development career I’ve had occasion to shut down a number of projects. On every occasion when I turned over a project to a new owner, the results were disappointing. Consequently, I have decided to shut down the EasyGui project rather than to try to find a new owner for it.

The EasyGui software will remain frozen in its current state. I invite anyone who has the wish, the will, the energy, and the vision to continue to evolve EasyGui, to do so. Copy it, fork it, and make it the basis for your own new work.

— Steve Ferg, March 6, 2013
Posted in Uncategorized | 10 Comments

EasyGui and Threads

I’ve just received a question from an easygui user that says, basically: “I’m trying to run easygui in independent threads, and it is not working. Can you tell me what I’m doing wrong? (code enclosed)”

Well, a short answer might be, “No. I’ve never tried to use easygui with threads”. An alternative answer might be: “Knowing Tkinter, I doubt it can be done”. But of course an even better answer would be: google tkinter and thread or threads or threading.

Which I did.

To my surprise, it is possible to use Tkinter with threads.

Here are a few of the URLs that I found, with the most promising first.







So much for threads and Tkinter. How about threads and easygui?

Well, in theory, anything that works for Tkinter in general should work for easygui in particular. But the way things work in theory and the way things really work aren’t always the same. If anyone has any experience with threads and easygui, would you be willing to share it?

Posted in Uncategorized | Leave a comment

EasyGui version 0.96 BETA is available

EasyGui version 0.96 BETA is available.

It can be downloaded from the beta download page of the EasyGui page at SourceForge.

This version of EasyGui fixes some problems with Python-version independence.

  • A statement with Python 2.x-style exception-handling syntax raised a syntax error when running under Python 3.x. Thanks to David Williams for reporting this problem.
  • Under some circumstances, PIL was unable to display non-gif images that it should have been able to display. The cause appears to have been some non-Python-version-independent import syntax. PIL modules are now imported with a version-independent syntax. Thanks to Horst Jens for reporting this problem.

This version of EasyGui was built with a new set of build scripts. If you encounter a problem with a distribution file, please let me know ASAP via the contact page at www.ferg.org.

Ben — Please contact me via the contact page at www.ferg.org.

Posted in Uncategorized | 2 Comments

EasyGui version 0.95 has been released

EasyGui version 0.95 has been released.

It can be downloaded from the downloads page of the EasyGui page at SourceForge.

This version includes one enhancement.

Previous versions of EasyGui could display only .gif image files using the msgbox or buttonbox “image” argument.

This version can display all image-file formats supported by PIL (the Python Imaging Library) if PIL is installed.

If msgbox is asked to open a non-gif image file, it attempts to import PIL and to use PIL to convert the image file to a displayable format.

If PIL cannot be imported (probably because PIL is not installed) EasyGui displays an error message saying that PIL must be installed in order to display the image file.

Note that at this time http://www.pythonware.com/products/pil/ says that PIL doesn’t yet support Python 3.x.

Posted in Uncategorized | 3 Comments

EasyGui v0.94 has been released

EasyGui version 0.94 has been released. It can be downloaded from the downloads page of the EasyGui page at SourceForge.

Highlights of this release include:

  • The distribution now includes setup.py.  This should make it easier to install EasyGui, especially for Mac users.
  • Codebox and textbox now return the contents of the box.  This makes it possible to use codebox and textbox as data-entry widgets. It also makes it possible to do something like this:
    • retrieve some text from (say) a file
    • display the text in a textbox or codebox
    • have the user update it
    • get the text back
    • save the updated text in the file
  • Support has been added for keyboard navigation with the arrow keys. Previously keyboard navigation recognized only the the TAB keys.
  • In EgStore, the pickle file is now opened for reading and writing with “rb” and “wb” rather than with “r” and “w”.  This change is necessary for compatibility with Python 3+.

There are also a number of minor bug fixes. See below for full details.


  1. The codebox and textbox functions now return the contents of the box, rather than simply the name of the button (“Yes”). This makes it possible to use codebox and textbox as data-entry widgets. A big “thank you!” to Dominic Comtois for requesting this feature, patiently explaining his requirement, and helping to discover the tkinter techniques to implement it.
  2. Added support for SPACEBAR to command buttons. Now, when keyboard focus is on a command button, a press of the SPACEBAR will act like a press of the ENTER key; it will activate the command button.
  3. Added support for keyboard navigation with the arrow keys (up,down,left,right) to the fields and buttons in enterbox, multenterbox and multpasswordbox, and to the buttons in choicebox and all buttonboxes.
  4. Added highlightthickness=2 to entry fields in multenterbox and multpasswordbox. Now it is easier to tell which entry field has keyboard focus.

NOTE THAT enhancement #1 breaks backward compatibility.  But because in previous versions of EasyGui the value returned by codebox and textbox was meaningless, no application should have been checking it.  So in actual practice, this change should not break backward compatibility.


  1. In EgStore, the pickle file is now opened with “rb” and “wb” rather than with “r” and “w”. This change is necessary for compatibility with Python 3+.
    Thanks to Marshall Mattingly for reporting this problem and providing the fix.
  2. In integerbox, the actual argument names did not match the names described in the docstring.
    Thanks to Daniel Zingaro of the University of Toronto for reporting this problem.
  3. In choicebox, the signature to choicebox incorrectly showed choicebox as accepting a “buttons” argument.
    The signature has been fixed.
  4. In integerbox, the “argLowerBound” and “argUpperBound” arguments have been renamed to “lowerbound” and “upperbound” and the docstring has been corrected.

NOTE THAT bug fix #4 breaks backward compatibility.  If “argLowerBound” or “argUpperBound” are used as the names of keyword arguments, an AssertionError with an explanatory error message is raised.  But because current users of integerbox are probably passing these values in as positional rather than keyword arguments, the effect of this change in actual practice is expected to be minimal.

Posted in Uncategorized | 5 Comments

EasyGui and Unicode

As Python 3 is now more Unicode-friendly, I’m getting more and more enquiries about using EasyGui with Unicode.

First, of course, folks are interested in using EasyGui to display messages in non-Latin character sets.  They are interested in whether EasyGui can display Unicode, and also in what tools are available for writing Python code that contains Unicode text.

In addition, there is interest in getting user input in non-Latin character sets.  Some developers are interested in support for bidirectional (“bidi”) languages such as Hebrew and Arabic, which normally read from right to left but allow the embedding of left-to-right text for things like numbers and quotations from left-to-right languages. It was in connection with bidi languages that I recently posted on how to reverse a string in Python 3.

EasyGui uses Tkinter (which uses Tk and Tcl) for its graphical displays. (Tkinter and Tk are included in the standard Python distribution, which is why EasyGui uses Tkinter.) So questions about EasyGui’s Unicode capabilities are essentially questions about Tkinter’s (and Tk’s) Unicode capabilities.

Unfortunately, the news about Tkinter’s Unicode capabilities is not good. Tk and Tcl weren’t designed with Unicode in mind, and certainly not with Unicode data entry in mind.

Tkinter (and therefore Easygui) can display non-Latin Unicode characters if they are sent in from a calling application.  The problem here is how to write the Python code for the application. One person I know uses the gedit editor on Linux to do it;  it seems that gedit has pretty good Unicode support.

I don’t know about Unicode support in the popular Python IDE’s. This post suggests that SPE might provide support for Unicode. (If you have information about Python IDEs and their support for Unicode, it would be great if you could comment on this post with that information.)

But entering user input into Tkinter and EasyGui is a problem. As far as I know, there is no way to tell a Tkinter data-entry widget about the incoming encoding. So about the best you can do is to use (say) gedit to create the text that you want, and then copy and paste the text into the EasyGui data-entry widget. Needless to say, this is highly unsatisfactory.

According to this post, as of 2008-07-03 “Tk has no bidi facilities yet”. So Tk, and therefore Tkinter, and therefore EasyGui, do not support bidi languages, and it doesn’t appear likely that bidi support will be coming any time soon. So Arabic and Hebrew users are just plain out of luck.

I’d like to be able to tell you which Python GUI packages do provide good Unicode support; then I could recommend wxPython or PyQT or something as an alternative to EasyGui. But I honestly don’t know about the level and quality of Unicode support in other GUI packages. (If you have information on this topic, it would be great if you could comment on this post with that information.)

Posted in Uncategorized | 9 Comments

EasyGui doesn’t get focus on Mac OS X

Nick Fisher has reported that when he’s running EasyGui on OS X, the launched UI windows don’t have focus.  The problem is easy to reproduce.

from easygui import *
msgbox("Hello, world!")

He has tracked down the problem. It looks like it is a bug in the OS X version of Tcl.

And he has worked out a solution. It is available at gist.github.com/207825

Nick says, “It’s definitely a hack, but it works!”

Posted in Uncategorized | Leave a comment

Hello world!

EasyGui is a package that allows Python programmers easily to implement simple graphical user interfaces (GUIs) to their Python programs.

This blog will be used mostly as a place for publishing news about EasyGui, and especially for publishing announcements of updates to EasyGui.

The EasyGui home page is http://easygui.sourceforge.net.

— Steve Ferg

Posted in Uncategorized | Leave a comment