Testskripte mit Python Qt

Stefan Heinrich

26/07/2021

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


Geschrieben von Stefan Heinrich

Seit Oktober 2020 gehört Stefan Heinrich zum MEDtech-Ingenieur Team. Hier ist er vor allem als Hardwareentwickler tätig.


Weitere Beiträge

  • 09/09/2025
  • Allgemein, Software

In vorangegangenen Blogbeiträgen habe ich zwei wesentliche Komponenten einer einfachen und universell einsetzbaren Software-Architektur vorgestellt: Events mit Dispatcher, Listeners und Datapool. Damit lassen sich bereits sehr viele einfache Use-Cases ...

Weiterlesen
  • 29/01/2025
  • Allgemein, Hardware, Testen

EinleitungUm bei der EMV Prüfung für die Zulassung neuer medizintechnischer Geräte das Risiko zu reduzieren machen wir gerne Vortests mit den Geräten in der Prototypen Phase. Aktuell unterstützen wir ...

Weiterlesen
  • 12/11/2024
  • Allgemein, Software, Testen, Tools

In sicherheitskritischen Softwareprojekten steht die Qualität der Software an erster Stelle. Besonders bei Klasse-C-Software, die nach strengen Normen wie IEC 62304 (Medizintechnik) zertifiziert werden muss, ist es essenziell, dass ...

Weiterlesen
Cookie-Übersicht

Die Internetseiten der MEDtech Ingenieur GmbH verwenden Cookies. Cookies sind Textdateien, welche über einen Internetbrowser auf einem Computersystem abgelegt und gespeichert werden.

Zahlreiche Internetseiten und Server verwenden Cookies. Viele Cookies enthalten eine sogenannte Cookie-ID. Eine Cookie-ID ist eine eindeutige Kennung des Cookies. Sie besteht aus einer Zeichenfolge, durch welche Internetseiten und Server dem konkreten Internetbrowser zugeordnet werden können, in dem das Cookie gespeichert wurde. Dies ermöglicht es den besuchten Internetseiten und Servern, den individuellen Browser der betroffenen Person von anderen Internetbrowsern, die andere Cookies enthalten, zu unterscheiden. Ein bestimmter Internetbrowser kann über die eindeutige Cookie-ID wiedererkannt und identifiziert werden.

Durch den Einsatz von Cookies kann die MEDtech Ingenieur GmbH den Nutzern dieser Internetseite nutzerfreundlichere Services bereitstellen, die ohne die Cookie-Setzung nicht möglich wären.

Mittels eines Cookies können die Informationen und Angebote auf unserer Internetseite im Sinne des Benutzers optimiert werden. Cookies ermöglichen uns, wie bereits erwähnt, die Benutzer unserer Internetseite wiederzuerkennen. Zweck dieser Wiedererkennung ist es, den Nutzern die Verwendung unserer Internetseite zu erleichtern. Der Benutzer einer Internetseite, die Cookies verwendet, muss beispielsweise nicht bei jedem Besuch der Internetseite erneut seine Zugangsdaten eingeben, weil dies von der Internetseite und dem auf dem Computersystem des Benutzers abgelegten Cookie übernommen wird.

Die betroffene Person kann die Setzung von Cookies durch unsere Internetseite jederzeit mittels einer entsprechenden Einstellung des genutzten Internetbrowsers verhindern und damit der Setzung von Cookies dauerhaft widersprechen. Ferner können bereits gesetzte Cookies jederzeit über einen Internetbrowser oder andere Softwareprogramme gelöscht werden. Dies ist in allen gängigen Internetbrowsern möglich. Deaktiviert die betroffene Person die Setzung von Cookies in dem genutzten Internetbrowser, sind unter Umständen nicht alle Funktionen unserer Internetseite vollumfänglich nutzbar.

Weitere Informationen erhalten Sie in unserer Datenschutzerklärung.

Unbedingt notwendige Cookies

Dieses Cookie wird benötigt, um Ihre Cookie-Einstellungen zu merken und weitere Hauptfunktionen zur Verfügung zu stellen

Um Ihnen eine Auskunft über Ihre gespeicherten personenbezogenen Daten hier (https://medtech-ingenieur.de/gespeicherte-daten-2/) geben zu können, benötigen wir einen Cookie, um Sie bei der Datenabfrage identifizieren zu können. Dieser Cookie muss aus Sicherheitsgründen deshalb aktiviert sein. Ein weiterer Cookie wird gesetzt, um diesen Banner nicht erneut anzeigen zu müssen.

Cookie-Name Beschreibung
PHPSESSID Name: PHP session
Anbieter:
Eigentümer der Webseite (MEDtech Ingenieur)
Zweck:
Wir benötigt, um Sie bei der Anfrage von personenbezogenen Daten identifizieren zu können. Das Cookie wird nur gesetzt, wenn Sie eine Anfrage hier (https://medtech-ingenieur.de/gespeicherte-daten-2/) stellen.
Laufzeit: Sitzungsende
Kategorie: Unbedingt notwendige Cookies
moove_gdpr_popup Name: Cookie-Box Einstellungen
Anbieter:
Eigentümer der Webseite (MEDtech Ingenieur)
Zweck:
Wird benötigt, um Ihre Cookie-Einstellungen zu speichern, um den Cookie-Banner nicht erneut anzeigen zu müssen.
Laufzeit: 1 Jahr
Kategorie: Unbedingt notwendige Cookies
comment_author_9c90e388e3e1be4a6c594fa6ac8a3eec
comment_author_email_9c90e388e3e1be4a6c594fa6ac8a3eec
comment_author_url_9c90e388e3e1be4a6c594fa6ac8a3eec
Name: Kommentar Einstellungen
Anbieter:
Eigentümer der Webseite (MEDtech Ingenieur)
Zweck:
Cookie wird angelegt, wenn Sie ein Kommentar auf MEDtech Ingenieur veröffentlichen wollen, um Sie als Autor identifizieren und den aktuellen Status Ihres Kommentars anzeigen zu können. Das Cookie enthält den angegebenen Namen. Das Cookie wird erst gesetzt, wenn Sie der Speicherung Ihrer personenbezogenen Daten zustimmen.
Laufzeit: 1 Jahr
Kategorie: Unbedingt notwendige Cookies
rmp-rate Name: RMP Rate
Anbieter: Eigentümer der Webseite (MEDtech Ingenieur)
Zweck: Cookie wird angelegt, wenn Sie eine Bewertung eines Blogbeitrags mithilfe des Sternebewertungssystems abgeben. Ihnen wird eine anonymisierte ID zugewiesen, um zu erkennen, ob Sie einen Artikel bereits bewertet haben oder nicht. Das Cookie wird nur verwendet, um zu verhindern, dass mehrfache Bewertung abgegeben werden und erst gesetzt, wenn Sie auf einen Stern klicken.
Laufzeit: 1 Jahr
Kategorie: Unbedingt notwendige Cookies
medtech-download-page Name: Download Page
Anbieter: Eigentümer der Webseite (MEDtech Ingenieur)
Zweck: Cookie wird angelegt, wenn Sie den Landing-Page Prozess erfolgreich durchlaufen haben. Dies geschieht nur, wenn Sie einen Content-Download von unserer Website anstreben.
Laufzeit: 1/2 Jahr
Kategorie: Unbedingt notwendige Cookies