© Liashko/Shutterstock.com
Entwickler Magazin
Einfache GUIs mit Python und Qt

Außen GUI, innen hui!

Im Zeitalter der Smartphones und Tablets sind grafische Applikationen ein Muss geworden. Die Programmierung von GUIs auf der Ebene des Quelltexts ist allerdings nach wie vor aufwändig, da in klassischen statisch typisierten Programmiersprachen wie C++ relativ viel Code benötigt wird, um ein GUI zu implementieren. Doch es geht auch anders …

Wolfgang Schmidt


ArtikelserieTeil 1: Entwurf und Implementierung der GUI-ElementeTeil 2: Datenhaltung und Integration zu einer lauffähigen Anwendung

Ein gängiger Weg zur Implementierung ist der Einsatz von IDEs, die den benötigten Code automatisiert erzeugen. Bei diesem Vorgehen nimmt die IDE dem Entwickler viele Aufgaben ab, indem GUI-Elemente in GUI-Buildern entworfen und der entsprechende Code automatisch generiert wird. Eine Alternative kann hier die Verwendung einer Kombination einer modernen dynamisch typisierten Skriptsprache mit einem leistungsfähigen GUI-Toolkit sein. In dieser zweiteiligen Artikelserie soll gezeigt werden, wie mit Python und Qt mit wenig Code eine GUI-Anwendung realisiert werden kann. Der erste Teil der Artikelserie stellt den Anwendungsfall vor und erläutert die Implementierung der einzelnen GUI-Komponenten mit Python und Qt.

Bereitstellung von Qt-Funktionalität für Python

Um die Funktionalität der Qt-Bibliothek für die Programmierung mit Python zur Verfügung zu stellen, werden entsprechende Anbindungen (Bindings) benötigt. Es stehen hier zwei Alternativen für solche Bindings zur Verfügung:

PyQt: Dieses ist das zuerst entstandene Qt-Binding für Python, das von der britischen Firma Riverbank Computing entwickelt wurde.PySide: Eine alternative Implementierung eines Qt-Binding für Python, das weitgehend identische Funktionalität bietet wie PyQt und dabei weitestgehende Kompatibilität zu PyQt zu wahren sucht. PySide entstand, nachdem es Nokia als damaliger Besitzer der Rechte an Qt nicht gelang, mit Riverbank zu einer Einigung zur Änderung der Lizenzierung von PyQt zu kommen [1].

PyQt gilt dabei im Allgemeinen als das ausgereiftere Binding, während an PySide die liberalere Lizenzierung geschätzt wird (Kasten: „Lizenzierung von PyQt und PySide“).

Lizenzierung von PyQt und PySidePyQtDie Qt-Klassenbibliothek stand bis einschließlich Version 4.4 unter zwei verschiedenen Lizenzen zur Verfügung: einerseits unter der Gnu Public License (GPL), andererseits unter einer proprietären Lizenz. Das Lizenzmodell von PyQt folgt hier dem früheren Modell von Qt, d. h. auch für PyQt gibt es eine duale Lizenz, die es erlaubt, PyQt unter den Bedingungen der GPL oder alternativ mit einer proprietären Lizenz zu betreiben. Für die Erstellung von Anwendungen, die unter den Bedingungen der GPL veröffentlicht werden sollen, ist die proprietäre Lizenz nicht notwendig. Allerdings bedingt das, dass der selbstgeschriebene Code der Anwendung ebenfalls unter die GPL gestellt werden mu...

Entwickler Magazin
Einfache GUIs mit Python und Qt

Außen GUI, innen hui!

Im Zeitalter der Smartphones und Tablets sind grafische Applikationen ein Muss geworden. Die Programmierung von GUIs auf der Ebene des Quelltexts ist allerdings nach wie vor aufwändig, da in klassischen statisch typisierten Programmiersprachen wie C++ relativ viel Code benötigt wird, um ein GUI zu implementieren. Doch es geht auch anders …

Wolfgang Schmidt


ArtikelserieTeil 1: Entwurf und Implementierung der GUI-ElementeTeil 2: Datenhaltung und Integration zu einer lauffähigen Anwendung

Ein gängiger Weg zur Implementierung ist der Einsatz von IDEs, die den benötigten Code automatisiert erzeugen. Bei diesem Vorgehen nimmt die IDE dem Entwickler viele Aufgaben ab, indem GUI-Elemente in GUI-Buildern entworfen und der entsprechende Code automatisch generiert wird. Eine Alternative kann hier die Verwendung einer Kombination einer modernen dynamisch typisierten Skriptsprache mit einem leistungsfähigen GUI-Toolkit sein. In dieser zweiteiligen Artikelserie soll gezeigt werden, wie mit Python und Qt mit wenig Code eine GUI-Anwendung realisiert werden kann. Der erste Teil der Artikelserie stellt den Anwendungsfall vor und erläutert die Implementierung der einzelnen GUI-Komponenten mit Python und Qt.

Bereitstellung von Qt-Funktionalität für Python

Um die Funktionalität der Qt-Bibliothek für die Programmierung mit Python zur Verfügung zu stellen, werden entsprechende Anbindungen (Bindings) benötigt. Es stehen hier zwei Alternativen für solche Bindings zur Verfügung:

PyQt: Dieses ist das zuerst entstandene Qt-Binding für Python, das von der britischen Firma Riverbank Computing entwickelt wurde.PySide: Eine alternative Implementierung eines Qt-Binding für Python, das weitgehend identische Funktionalität bietet wie PyQt und dabei weitestgehende Kompatibilität zu PyQt zu wahren sucht. PySide entstand, nachdem es Nokia als damaliger Besitzer der Rechte an Qt nicht gelang, mit Riverbank zu einer Einigung zur Änderung der Lizenzierung von PyQt zu kommen [1].

PyQt gilt dabei im Allgemeinen als das ausgereiftere Binding, während an PySide die liberalere Lizenzierung geschätzt wird (Kasten: „Lizenzierung von PyQt und PySide“).

Lizenzierung von PyQt und PySidePyQtDie Qt-Klassenbibliothek stand bis einschließlich Version 4.4 unter zwei verschiedenen Lizenzen zur Verfügung: einerseits unter der Gnu Public License (GPL), andererseits unter einer proprietären Lizenz. Das Lizenzmodell von PyQt folgt hier dem früheren Modell von Qt, d. h. auch für PyQt gibt es eine duale Lizenz, die es erlaubt, PyQt unter den Bedingungen der GPL oder alternativ mit einer proprietären Lizenz zu betreiben. Für die Erstellung von Anwendungen, die unter den Bedingungen der GPL veröffentlicht werden sollen, ist die proprietäre Lizenz nicht notwendig. Allerdings bedingt das, dass der selbstgeschriebene Code der Anwendung ebenfalls unter die GPL gestellt werden mu...

Neugierig geworden?


   
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang