The Python GUI Project

by Gregory Ewing

About the Project

This is a project to develop a cross-platform pythonic GUI API.  The goals of this project are:
  • Develop a GUI API that is designed specifically for Python, taking advantage of Python's unique language features and working smoothly with Python's data types.
  • Provide implementations of the API for the three major platforms (Unix, Macintosh and Windows) that are small and lightweight, interposing as little code as possible between the Python application and the platform's underlying GUI facilities, and not bloating the Python installations or applications which use them.
  • Document the API purely in Python terms, so that the programmer does not need to read the documentation for another GUI library, in terms of another language, and translate into Python.
  • Get the library and its documentation included in the core Python distribution, so that truly cross-platform GUI applications may be written that will run on any Python installation, anywhere.

Latest Version - 2.5.4

Now works with Python 3 on MacOSX and Windows!

(Python 3 support for Gtk will have to wait until Gtk 3 and related libraries are stable and up to speed with GObject Introspection.)

The ScrollableView class has been completely reimplemented on Windows and should now work properly with all builds of PyWin32.



Includes tutorial material, example code and API reference



Last updated 25 Mar 2017
This version includes three implementations:
  • MacOSX - requires PyObjC (tested with PyObjC-1.2 on Tiger, PyObjC-2.3 on Snow Leopard)
  • Linux - requires pygtk (tested with pygtk-2.14.0 and Gtk+-2.14.7)
  • Windows - requires pywin32 (tested with pywin32-213) and ctypes (included with Python 2.5 and later)

Python versions required:

  • Python 2: 2.3 or later
  • Python 3: 3.1 or later
To use the OpenGL facilities, you will need PyOpenGL, and, for the Gtk version, GtkGLExt and PyGtkGLExt.

Obsolete Versions


Example application:

You may also find the contents of the Tests folder in the distribution useful as a source of example code.


PyGUI Mailing List -- for all discussion relating to the development and use of PyGUI.

The PyObjC, PyGtk and PyWin32 mailing lists may also be appropriate for platform-specific issues.


Some parts of the Windows implementation are based on contributions by Patrick Forget and Erez-Sh. Even though I didn't use much of their code in the end, I appreciate their efforts and may draw more from it in the future.