Testskripte mit Python Qt

Qt (wie „cute“ im Englischen) ist ein auf C++ basierendes Rahmenwerk an Modulen und Bibliotheken zur plattformübergreifenden Software Entwicklung. Um das Qt Framework auch in Python nutzen zu können, werden Wrapper-Bibliotheken, sogenannte „Bindings“, eingesetzt. Python Qt ermöglicht das Programmieren von Anwendungen mit intuitiv bedienbaren grafischen User Interfaces unter vergleichsweise geringem Zeitaufwand.

Wer nach Python Qt sucht wird in erster Linie auf „Qt for Python“ stoßen, den offiziellen Namen vom Entwicklungsprojekt des Bindings PySide. Alternativ gibt es mit PyQt einen weiteren Satz von Python Bindings, welcher aufgrund seiner stabileren Umsetzung und häufigerer Updates lange Zeit stärker verbreitet war. Heute sind sich beide Bindings sehr ähnlich und die Differenzen erscheinen nicht mehr so deutlich wie noch vor einigen Jahren. Die Lizensierung ist für die meisten Anwender der relevanteste Unterschied. PyQt ist unter GNU GPL v3 und einer zusätzlichen kommerziellen Lizenz verfügbar, während PySide unter einer LGPL Lizenz genutzt werden kann. Da die LGPL Lizenz weniger strenge Vorgaben (bspw. Veröffentlichung des Quellcodes) macht, bietet sich PySide häufiger für eine kommerzielle Nutzung an als PyQt. Für nicht-kommerzielle oder private Anwendungen können beide Bindings verwendet werden.

Wofür verwenden wir Python Qt?

Mithilfe von Python Qt lassen sich in kurzer Zeit Testskripte und grafische User Interfaces erstellen. Bei Hardware- und Softwaretests beschleunigen diese den Testablauf und vereinfachen die Testdurchführung. Das im rechten Bild dargestellte Skript simuliert beispielsweise die serielle Kommunikation eines Durchflusssensors bei Softwaretests an einem Medizinprodukt. Der eigentliche Sensor wird für die Testdurchführung nicht benötigt, wodurch die Einstellung spezifischer Systemzustände erleichtert wird. Die Eingabe bestimmter Grenzwerte ermöglicht das Auslösen von Alarmsignalen oder die Überprüfung von anderen auf den Messdaten des Sensors basierenden Algorithmen (Regelung, etc). Parameter wie Fehlerzustände, Temperaturen oder Seriennummern des Sensors sind im Test ebenfalls beliebig manipulierbar, ohne das ein komplizierter Testaufbau notwendig ist.

Eine weitere praktische Anwendung ist die Fernsteuerung von Messmitteln. Mit dem unten dargestellten Skript lassen sich beispielsweise ein Labornetzteil sowie eine elektronische Last über Netzwerkverbindung steuern. Bestimmte Hardwaretests können auf diesem Weg auch von außerhalb des Labors, oder aus dem Homeoffice durchgeführt werden. Mit entsprechend komplexen Programmen kann, wenn nötig, auch eine vollständige Testautomatisierung erreicht werden.

Was benötigt man zum Einstieg?

Eine Installation von Python und grundlegende Programmierkenntnisse sind im Grunde alles was man zum Einstieg in Python Qt benötigt. Die Installationsdateien für verschiedene Python Versionen, zugehörige Dokumentation und auch einige Tutorials kann man von der Python Webseite beziehen (www.python.org). Zu beachten ist bei der Installation die Aktivierung folgender Option, da das System Python-spezifische Kommandozeilenbefehle sonst nicht zuordnen kann:

Anschließend hat man auch Zugriff auf pip, den „Package Installer for Python“. Zur Installation von PySide oder PyQt wird das Kommando „pip install“ wie in folgendem Beispiel verwendet:

Treten trotz allem Fehler beim Ausführen von pip auf, kann es helfen, die Kommandozeile als Administrator auszuführen. Dokumentationen und Tutorials zu Python Qt gibt es unter anderem auf den Webseiten von PyQt und PySide (siehe weiterführende Links). Häufig lohnt es sich auch direkt in der C++ Dokumentation von Qt nachzulesen, um ein besseres Verständnis für die Implementierung von Python Qt zu bekommen.

Virtuelle Python-Entwicklungsumgebungen (venv/virtualenv) sind praktisch, wenn man vorhat unterschiedliche Versionen der Bindings in mehreren Projekten zu verwenden. Sie vereinfachen die Organisation der einzelnen Projekte deutlich. Zu guter Letzt ist zumindest ein Texteditor notwendig um Python Code zu schreiben, strukturierter ist es jedoch mit einer entsprechenden Entwicklungsumgebung (IDE). Welche IDE man verwenden möchte, ist dabei hauptsächlich von persönlichen Präferenzen abhängig.

Atom als Python IDE

Egal ob Visual Studio, PyCharm oder IDLE, die Verwendung einer Entwicklungsumgebung erleichtert das Programmieren mit zahlreichen praktischen Funktionen. Einige Texteditoren ermöglichen einen ähnlichen Workflow unter Verwendung verschiedener Add-Ins. Ich persönlich habe mir für kommende Python Qt Projekte den Texteditor Atom als Python IDE eingerichtet. Für Atom stehen vielseitige Erweiterungen zur Verfügung, um Benutzeroberfläche und Aussehen zu personalisieren oder die Funktionen des Texteditors zu erweitern:

Folgende oder vergleichbare Packages sollten zu diesem Zweck mindestens installiert werden (File -> Settings -> Install):

  • script (zum Ausführen von Code in Atom)
  • linter-flake8 (Code Analyse)
  • python-debugger

Interessant für Workflow und Benutzeroberfläche:

  • python-autopep8 (automatische Formatierung)
  • minimap (Anzeige der Codeübersicht auf der rechten Seite)
  • autocomplete-python (Python-spezifische Auto-Vervollständigung)
  • file-icons (übersichtlichere Icons für verschiedene Dateitypen)

Informationen zu notwendigen Einstellungen sind in der README-Sektion des jeweiligen Packages zu finden.

Verwendung von Qt Designer

Wenn man nicht den gesamten Code eines Skriptes von Hand schreiben möchte, bietet sich die Verwendung von Qt Designer an. Da die Software das Platzieren von UI-Elementen per Drag-and-drop ermöglicht, kann sie das Erstellen der User Interfaces beschleunigen. Aus den entstehenden .ui Dateien kann anschließend Python Code generiert werden, welchen man nur noch mit der notwendigen Logik zur Realisierung der eigentlichen Softwarefunktion auffüllen muss.

Qt Designer ist Teil des Packages PyQt5-Tools und kann mithilfe des Kommandozeilenbefehls „pip install pyqt5-tools“ installiert werden. Je nach Betriebssystem ist Qt Designer anschließend im Python Installationsordner (in meinem Fall unter …\Python39\Lib\site-packages\qt5_applications\Qt\bin\designer.exe) zu finden.

Weiterführende Links

Für weitere Informationen oder Projektvorschläge unter Verwendung von Python Qt können Sie sich gern an uns wenden. Außerdem sind zusätzliche Informationen und Tutorials unter folgenden Links zu finden, falls Sie sich selbst eingehender mit Python Qt beschäftigen wollen:

zu Python: https://www.python.org/
zu Qt: https://wiki.qt.io/About_Qt
zu PySide / Qt for Python: https://doc.qt.io/qtforpython
zu PyQt: https://riverbankcomputing.com/software/pyqt/intro

Kontaktieren Sie uns!

Autor

Auch interessant:

Und täglich grüßt das Pflichtenheft

Wenn ich mit einem Blog Artikel über die Entwicklung starte, dann mit dem Thema Pflichtenheft. Denn das Pflichtenheft ist das Fundament einer jeden Entwicklung. Das Pflichtenheft hat Auswirkungen auf die Architektur, die technische Realisierung, die Projektkosten, den Terminplan, die Herstellkosten, den Lieferumfang und nicht zuletzt die Kundenzufriedenheit und den Markterfolg.…
Getagged mit: , , ,