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 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 OpenSource 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 | LGLP 3.0 (mutliple | 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
- List of widget toolkits
- Graphical user interface builder
- The Python GTK+ 3 Tutorial
- Why are Tk GUI's considered ugly?
- wxPython vs PyQt vs PyGTK: when and what to use?
- What's the difference between GTK and QT?
Qt-specific