Python ist eine moderne Programmiersprache, welche bevorzugt im „Hintergrund“ eingesetzt wird. Leistungsfähige Funktionen und Bibliotheken aus dem Bereich der Mathematik oder zur Datenverarbeitung erleichtern es, auch komplexe Algorithmen zu formulieren. Gerade für Anwendungen der künstlichen Intelligenz oder für die Auswertung von umfassenden Datenbeständen hat sich Python bewährt. Viele Programme benötigen jedoch auch eine grafische Benutzeroberfläche für die Interaktion mit dem Anwender. Hier hat man grundsätzlich zwei Optionen:

  • „Fremdes“ User Interface: Die Benutzeroberfläche wird durch ein eigenständiges Programm realisiert. Dabei wird eine Grafikbibliothek oder ein Framework genutzt, mit welchen sich die Anforderungen an die Oberfläche in der gewünschten Form realisieren lassen. Das Python Programm stellt dabei der Software seine Dienste in Form einer Bibliothek zur Verfügung. Bei der Wahl der Technologie zur grafischen Benutzeroberfläche ist man nicht eingeschränkt und kann das System seiner Wahl verwenden. Je nach dem auf welchem Betriebssystem die Software ausgeführt werden soll, kann man eine systemspezifische Lösung oder einen plattformübergreifenden Ansatz wählen. Diese Vorgehensweise scheint das Mittel der Wahl zu sein, wenn es sich um umfangreiche oder komplexere Oberflächen handelt.
  • „Eigenes“ User Interface: Die Benutzeroberfläche wird ebenso wie die anderen Programmteile in Python programmiert. Dazu setzt man ein so genanntes Toolkit ein und interagiert mit diesem direkt aus dem Python Programm. Python bietet den Programmierer hier unterschiedliche Toolkits.

Für die Programmierung von grafischen Benutzeroberflächen mit Python hat man die Wahl der Qual. Eine Übersicht gebräuchlicher Toolkits:

  • TkInter [1]: Es handelt sich um das Standard Interface für grafische Oberflächen, welche mit Python erstellt werden. Es bindet das Toolkit Tk, welches ursprünglich für die Sprache TCL (Tool Command Language) entwickelt wurde. TkInter ist direkt in der Standardbibliothek von Python enthalten. Das erlaubt das Erstellen von kleineren grafischen Benutzeroberflächen, ohne eine zusätzliche Bibliothek zu installieren, zu referenzieren und zu nutzen. Wir gehen im kommenden Abschnitt auf TkInter genauer ein.
  • PyQt [2]: Angebunden wird das Toolkit Qt, welches die Basis der Desktop-Umgebung KDE (K Desktop Environment) ist. Qt steht jedoch auch plattformübergreifend zur Verfügung und kann für freie Software kostenfrei verwendet werden. Für eine kommerzielle Nutzung von Qt fallen Lizenzgebühren an: Qt ist in der Programmiersprache C++ entwickelt.
  • PyGObject [3]: In diesem Fall wird das Grafik-Toolkit GtK verwendet. GtK (GIMP Toolkit) wurde ursprünglich für das Grafikprogramm GIMP entwickelt. Es handelt sich ebenfalls um ein plattformübergreifendes Framework, welches häufig für grafische Benutzeroberflächen eingesetzt wird. Das Gtk-Toolkit ist Basis der Desktop-Umgebung GNOME. Es ist in C programmiert und kann dennoch objektorientiert verwendet werden.
  • wxPython [4]: Es wird mit dem plattformübergreifenden Grafikframework wxWidgets gearbeitet. Das Ziel von wxWidgets ist es die Besonderheiten der jeweiligen Zielplattform möglichst gut abzubilden. Dazu zeichnet es die Controls nicht selbst, sondern verwendet die APIs der Zielsysteme.

Das war nur eine kleine Auflistung der Möglichkeiten grafische Oberflächen mit Python als Programmiersprache zu erstellen. Wenn Sie im Internet nach dieser Aufgabe suchen, werden Sie noch unzählige Bibliotheken finden, welche mit den unterschiedlichsten Grafikframeworks zusammenarbeiten. Eine umfassende Auflistung finden Sie zum Beispiel unter [5]. Hier wird nach den Zielsystemen unterteilt, d.h. für den Browser (Web-Applikationen), Cross Plattform (für mehrere Betriebssysteme (z.B. Windows, Linux, macOS) oder für ein spezielles Betriebssystem. Die Funktionsweise ist stets ähnlich, um ein Grafik-Toolkit aus Python zu verwenden, muss man über eine Bibliothek die entsprechende Bindung zwischen dem Python Programm und dem Grafik-Toolkit herstellen.

Links

[1] https://wiki.python.org/moin/TkInter
[2] https://riverbankcomputing.com/software/pyqt/intro
[3] https://pygobject.readthedocs.io/en/latest/
[4] https://wxpython.org/