GUI programming with Python

· by

Contents

A graphical user interface (GUI) is essential for applications which should be used by standard computer users (non-developers, not computer scientists, ...). However, I have almost no experience with GUI development outside of the web.

Multiple GUI toolkits exist and the only one I have ever used is Tk for a very, very simple GUI.

In this article, I want to share some of my thoughts about GUI development with Python as a beginner. I might update this in the future.

GUI toolkits

A widget toolkit, widget library, GUI toolkit, or UX library is a library or a collection of libraries containing a set of graphical control elements (called widgets) used to construct the graphical user interface (GUI) of programs.

Source: Widget toolkit

Comparison

I am only interested in GUI toolkits

  • which work on Ubuntu 12.04+,
  • which have a Python binding,
  • which are open source and have a good license,
  • which are used by others (and hence have enough documentation and examples)

It seems to me that only the following four toolkits fulfill these requirements: GTK, Qt, Tk, wxWidgets. Some of these have multiple Python bindings and all have multiple GUI builders / designers. I tried to find the most commonly used one. Please let me know if I should add something, replace something:

Name GTK+ Qt Tk wxWidgets
Latest version (23.01.2015) 3.14.1 5.4.0 8.6.3 3.0.2
Official Website gtk.org qt-project.org tcl.tk wxwidgets.org
Initial release 1998 1995 1991 1992
Written in C C++ C C++
Documentation gtk.org/documentation.php doc.qt.io tkdocs.com wxwidgets.org/docs
Tutorial developer.gnome.org/gtk-tutorial/stable qt-project.org/doc/qt-4.8/tutorials.html tkdocs.com/tutorial wxwidgets.org/docs/tutorials
StackOverflow questions 4,715 37,626 929 1,918
StackOverflow unanswered 1,159 9,704 208 429
License LGPL 2.1  LGPL 3.0 (multiple licenses) BSD-style wxWindows License
Python binding PyGTK (docs) PySide (docs), PyQt Tkinter (docs) wxPython (docs)
Python 3 support yes yes yes? yes
Designer Glade Interface Designer QtDesigner, QtCreator, QDevelop, Edyuk SpecTcl wxGlade
Famous applications Gnome applications like Inkscape, OTR-Verwaltung vlc, Virtual Box, KDE applications like K3B, Anki I could not find any Code::Blocks
FileZilla
0 A.D.

There are also some applications which use custom UI toolkits:

See also

Qt-specific