落就是一道风景线……

GUI Programming in Python

05.14.2010 · Posted in Python

Python has a huge number of GUI frameworks (or toolkits) available for it, from Tkinter (traditionally bundled with Python, using Tk) to a number of other cross-platform solutions, as well as bindings to platform-specific (also known as “native”) technologies.

GUI Programming in Python is a similar page. It’s not apparent to this reporter how the aims of the two differ.

While Python supports arguably a larger number of GUI toolkits than any other language (family), the selection doesn’t satisfy a significant number of Python programmers; Straw Dogs, for example, is representative of several others when he writes, ”if you want to create a GUI desktop app – don’t use Python”. Still, for most of us, Python GUI work is more-or-less a treat, and, in any case, more comfortable than the Java-oriented approach Straw Dogs favors.

Cross-browser Frameworks

Package Target Notes
PyJamas All major Web Browsers Comprehensive Widget toolkit, Python-to-Javascript compiler and AJAX library. Provides the “V” in MVC. See also PyjamasDesktop

Cross-platform Frameworks

The major cross-platform technologies upon which Python frameworks are based include Gtk, Qt, Tk and wxWidgets, although many other technologies provide actively maintained Python bindings.

Package Target Notes
AnyGui many (“Anygui is no longer being actively developed or supported.”) single source code runs on many GUI back-ends, including many in this table, plus ncurses
AVC Linux / many Fully automatic, live connection among graphical interface widgets and application variables.
Dabo WxPython Dabo is a 3-tier, cross-platform application development framework, written in Python atop the wxPython GUI toolkit – visithttp://dabodev.com/
EasyGui Tk EasyGUI is a module for very simple, very easy GUI programming in Python.
FXPy FOX Last released 2002; presumed dead.
GnomePython Gnome Gnome Platform bindings: bonobo, bonoboui, gconf, gnome, gnomecanvas, gnomevfs, gnomeui
GnomePythonDesktop Gnome Gnome Desktop bindings: metacity, nautilus, gnomeprint, gtksourceview, gtop, media-profiles, totem, wnck
GnomePythonExtras Gnome Additional Gnome bindings: libegg, gda, gtkmozembed, gtkspell, gksu, gdl, gtkhtml2
GWiz Tix GUI engine with integrated GUI builder. Need Alpha testers.
IronPython .NET/Mono Python for (originally MS’) .NET platform. See http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython for more info.
Jython Java Jython is an implementation of the high-level, dynamic, object-oriented language Python seamlessly integrated with the Java platform. see http://www.jython.org/Project/index.html for more info.
libavg MacOS, Linux Not strictly a GUI toolkit, but a high-level multimedia framework that allows construction of media-rich guis. http://www.libavg.de.
Lucid Windows, GTK, MacOS An abstraction layer and clever layout engine that uses the native GUI widgets of each operating system. Previously known as “Claro Framework” – visit http://www.lucidtoolkit.org/
Nufox XUL (many) Nufox is a python, XUL toolkit written ontop of the Twisted Networking Framework and Nevow. The idea is that you should be able to write server-side cross platform XUL applications without writing XUL markup, with little javascript, all from the comfort of python,http://nufox.berlios.de/
Ocean many GUI library. Python only “pythonic javax.swing”. Model/View/Controller, skinning. See http://ocean.sourceforge.net/
OcempGUI Pygame A small GUI toolkit written in Python based on Pygame. Provides accessibility support.
PyFltk FlTk supports Windows/Unix/Mac – visit http://pyfltk.sourceforge.net
PyGtk Gtk Bindings for pango, atk, gtk and libglade
PyGtk-ctypes Gtk Python 2.x and 3.x series, Bindings for gtk (gobject, glib) based on ctypes
PyGtk2Tk Tkinter PyGtk to Tkinter Wrapper runs PyGtk based code unchanged using Tkinter (Tk).
PyGUI MacOS / Gtk Abstract, pythonic API encapsulating different platforms; At the moment runs on MacOS X/Carbon & Unix/Gtk
PyjamasDesktop Many Comprehensive Widget toolkit that uses PyWebkitGtk to do the heavy lifting. Provides the “V” in MVC. See also Pyjamas
PyKDE Qt / KDE Python wrappers for the KDE libraries
PyPicoGUI PicoGUI python library is included in the main PicoGUI release
PyQt Qt Python bindings for the Qt application development framework
PySWT SWT PySWT is a Python Binding to the IBM Eclipse SWT library, to provide Python with a cross platform native looking GUI, seehttp://www.cs.nyu.edu/zilin/pyswt/pmwiki.php?n=PySWT.Introduction
PythonCard WxWidgets Both a framework and GUI builder. Can include wxPython code in PythonCard apps PythonCard tutorial videos at ShowMeDo
PyWebkitGtk Web Browsers PyWebkitGtk is a Python Binding to webkit, including DOM model manipulation, Javascript execution, plugin support (e.g. Flash) and (on the TODO list) SVG Canvas support, for extremely powerful and comprehensive applications development. See PyjamasDesktop for an easy-to-use API.
PyUi OpenGL Specialized GUI Toolkit for generating GUIs for OpenGL programs.
Sugar OLPC XO with Linux User interface for collaborative educational software
TkInter Tk Python’s “standard” GUI library
TkZinc Tk extension TkZinc is a extension of the Tk Canvas, with transparency, gradient, transformations
VTK many The Visualization ToolKit (VTK) is an open source, freely available software system for 3D computer graphics, image processing, and visualization. See http://public.kitware.com/VTK/index.php for more info.
Wax WxWidgets A wrapper to WxPython, easier and more “pythonic”
WxPython WxWidgets supports Windows/Unix/Mac for now – visit http://www.wxwidgets.orgwxPython tutorial videosat ShowMeDo on writing a graphical application
uxPython python/any uxPython is a pure python cross-platform UI toolkit for creating stunning user interfaces. Taking a cue from the highly innovative Swing toolkit for Java and inspired by the creative work being done on the web, uxPython was developed to bring fun and productivity to desktop development. http://www.uxpython.com
XGui XGui XGui is a cross-platform widget set with C,C++ and Python bindings. Actually supports *nix over Gtk and Windows over Win32 – seehttp://www.objectblues.net/wiki/show/XGui for more info.

Platform-specific Frameworks

Package Target Notes
BeThon BeOS
MacPython MacOS Supports both OSX and OS9
PyObjC MacOSX Supports Cocoa Aqua GUIs on the Mac
PyMUI MorphOS MagicUserInterface wrapper for Python. Support for MorphOS 2.x.
IronPython Studio Windows A free GUI implementation of IronPython with the same interface as Visual Studio.
venster Windows Venster is a highly native Windows GUI toolkit for Python based on the ctypes ffi library. The aim of Venster is to be a very lightweight wrapper around the standard Win32 API, making it easy to write slick windows applications in pure Python.
Win32All Windows Also known by the names of its components: PythonWin (for the UI), Win32Com(for COM/ActiveX), Win32 (for some other parts of the API)
PyScripter Windows An OpenSource IDE developed using Python and Delphi

GUI Design Tools and IDEs

IDE Target Notes
Autoglade PyGtk Automagically creates GUI applications from Glade GUI definition, GPL
BlackAdder PyQt Commercial, $50-400
BoaConstructor WxPython GPL, Alpha, but starting to mature. Useful for debugging wxPython code!
Eric3 and Eric4 PyQt GPL
FarPy GUIE WxPython Freeware. Open-Source. Support wxRuby & wxPerl aswell.
Gazpacho PyGtk GPL
Glade PyGtk GPL
GWiz Tix GUI engine with integrated GUI builder. Need Alpha testers.
IronPython Studio Windows Application A free GUI implementation of IronPython with the same interface as Visual Studio.
Komodo TkInter Commercial
PAGE Tkinter, Tix ?
PythonCard PythonCard,WxPython Python License. Alpha.
PythonWorks TkInter PythonWorks is no longer being developed. They still support their existing customers, but licenses are no longer available to new customers.
Qt Designer PyQt A form design tool, available with both Commercial and GPL editions of Qt. Can be used with Eric3 and Eric4.
WxDesigner WxPython Commercial Student EUR 29, Single user EUR 129
WxFormBuilder WxPython GPL cross-platform WYSIWYG GUI builder. Can produce XRC/XML, wxWidgets/C++, or wxPython/python.
WxGlade WxPython MIT License, Alpha.
xrope Python Tkinter GUI, class browser, file manager, with code completion. Licensed under the GPL.
Visual Python IDE Tkinter Visual Python IDE for Python 2.6 to TKINTER

Links

CameronLaird’s personal notes on Python GUIs http://phaseit.net/claird/comp.lang.python/python_GUI.htmlincludes over 25 links to toolkits and techniques for connecting python with a GUI.

Other places to look are PythonGuis at Thinki, and http://sensei.co.il/python/ui.html .

Opendocs previously had some material on Qt programming with Python for on-line reading, but ownership of the domain appears to have lapsed. An online version of Boudewijn Rempt’s book about PyQt for Qt 3, GUI Programming with Python: QT Edition, is still available. An up-to-date book covering PyQt4Rapid GUI Programming with Python and Qt by Mark Summerfield, is now available in print and as an online “rough cut”. More details can be found on the PyQt Wiki.

http://www.awaretek.com/toolkits.html – Choose Your GUI Toolkit: Find Your GUI Toolkit for Python based on your preferences. Quick cgi application which helps you make a choice. See also Python City.

http://en.wikipedia.org/wiki/Comparison_of_integrated_development_environments#Python – Wikipedia article describing several IDE’s and GUI Builders.

Editorial Notes

The above lists should be arranged in ascending alphabetical order – please respect this when adding new frameworks or tools.

Currently, this section is rather incomplete. Don’t be too disappointed if you can’t find the information you need, but please add any information you can contribute. It might be useful to have information about the GUIs and development tools in a fixed format to make them more easily comparable (see WebProgrammingTemplateandWebProgrammingTemplateHelp). Some categories: directly supported widgets, add-on widgets, layout managers, etc. Maybe it could answer the questions inChoosingGuiToolkits for each toolkit.

Tags:

Leave a Reply