GUI-Entwicklung mit Python und Qt/PySide
Desktop-Anwendungen mit Python und Qt entwickeln
01 Intro
Nicht jede Anwendung braucht ein Web-Frontend. Für technische Werkzeuge,
interne Anwendungen und klassische Desktop-Software bietet Qt eine
umfangreiche und plattformübergreifende GUI-Bibliothek. Mit PySide lässt sie
sich direkt aus Python nutzen.
Der Kurs zeigt den Weg von einfachen Fenstern und Dialogen bis zu
strukturierten Desktop-Anwendungen. Neben Widgets, Layouts und Events stehen
die Trennung von Oberfläche und Programmlogik, Datenmodelle,
Hintergrundverarbeitung und die Entwicklung wartbarer GUI-Anwendungen im
Mittelpunkt.
Kurs-ID
PY-008
Dauer
4 Tage
Format
Präsenz · Live Online · Inhouse
Vorkenntnisse
Sichere Python-Grundkenntnisse
02 Trainingsprogramm
Inhalte
Einstieg in Qt und PySide
- Qt und PySide
- Aufbau einer Qt-Anwendung
- QApplication
- Widgets und Fenster
- Event Loop
- PySide-Projekt einrichten und starten
Fenster und Widgets
- QWidget
- QMainWindow
- Labels und Eingabefelder
- Buttons
- Auswahlfelder
- Eigenschaften und Zustände von Widgets
Layouts
- Oberflächen ohne feste Positionen gestalten
- horizontale und vertikale Layouts
- Grid Layout
- verschachtelte Layouts
- Größenverhalten von Widgets
- anpassbare Fenstergrößen
Signals und Slots
- ereignisgesteuerte Programmierung
- Signals und Slots
- eingebaute Signals
- Slots implementieren
- Parameter übertragen
- Komponenten lose miteinander verbinden
Menüs, Toolbars und Actions
- Menüs
- Kontextmenüs
- Toolbars
- QAction
- Tastaturkürzel
- gemeinsame Actions für unterschiedliche Bedienelemente
Dialoge und Benutzerinteraktion
- modale und nichtmodale Dialoge
- eigene Dialoge
- Eingaben validieren
- Meldungen und Rückfragen
- Dateiauswahl
- Benutzeraktionen kontrolliert abbrechen
Qt Designer
- Oberflächen visuell erstellen
- Widgets und Layouts im Designer
- .ui-Dateien
- Designer-Oberflächen aus Python verwenden
- generierter Code oder dynamisches Laden
- Oberfläche und Programmlogik getrennt halten
Model/View-Architektur
- Daten und Darstellung trennen
- Model/View-Konzept von Qt
- List-, Table- und Tree-Views
- Standardmodelle
- eigene Modelle
- größere Datenmengen darstellen
Anwendungsarchitektur
- GUI und Fachlogik trennen
- Verantwortlichkeiten von Fenstern und Dialogen
- Controller- und Service-Komponenten
- Zustände verwalten
- Abhängigkeiten reduzieren
- wachsende Anwendungen strukturieren
Dateien und Einstellungen
- Dateien öffnen und speichern
- Benutzereinstellungen
- QSettings
- zuletzt verwendete Dateien
- Anwendungszustand speichern
- Konfiguration von Programmdaten trennen
Länger laufende Aufgaben
- warum die Oberfläche blockiert
- Event Loop und blockierender Code
- Threads in GUI-Anwendungen
- QThread
- Worker Objects
- Thread-Sicherheit berücksichtigen
Fehlerbehandlung und Logging
- Exceptions in GUI-Anwendungen
- Fehler benutzerfreundlich anzeigen
- technische Details protokollieren
- Logging integrieren
- unerwartete Fehler behandeln
- Diagnoseinformationen bereitstellen
GUI-Anwendungen testen
- Programmlogik unabhängig von der Oberfläche testen
- testbare GUI-Architektur
- Widgets automatisiert testen
- Benutzerinteraktionen simulieren
- Signals überprüfen
- Grenzen von GUI-Tests
Anwendung bereitstellen
- Abhängigkeiten einer Desktop-Anwendung
- virtuelle Umgebungen
- Ressourcen und Konfigurationsdateien
- Icons und andere Assets
- Anwendungen paketieren
- Besonderheiten von Windows, Linux und macOS
03 Durchführung
Rahmen und Organisation
Dauer
4 Tage
Durchführung
Präsenz oder Live Online, vorzugsweise als Inhouse-Schulung
Schwerpunkt
Inhouse-Schulungen für Unternehmen und Teams
Sprache
Deutsch, englische Fachbegriffe und Dokumentation
Unterlagen
Kursunterlagen, Beispiele und Übungsaufgaben
Technik
Eigener Rechner mit aktueller Python-Version und Entwicklungsumgebung
Inhouse-Schulungen
Die Schwerpunkte können an vorhandene Kenntnisse, eingesetzte
Technologien und konkrete Anforderungen des Teams angepasst werden.
04 Zielgruppe
Für wen ist der Kurs gedacht?
Der Kurs richtet sich an Python-Entwicklerinnen und -Entwickler, die grafische Desktop-Anwendungen, technische Werkzeuge oder interne Benutzeroberflächen mit Qt entwickeln möchten.
Er eignet sich sowohl für Teilnehmer ohne bisherige GUI-Erfahrung als auch für Entwickler, die bereits kleinere PySide- oder PyQt-Anwendungen erstellt haben und diese systematischer strukturieren möchten.
Die Teilnehmer sollten mit folgenden Themen sicher umgehen können:
- grundlegende Python-Syntax
- Funktionen
- Module und Packages
- Klassen und Objekte
- Exceptions
GUI-Erfahrung
Erfahrungen mit Qt, PySide oder anderen GUI-Frameworks sind nicht
erforderlich.
05 Lernziele
Was Sie nach dem Kurs können
Nach dem Kurs können die Teilnehmer:
- Desktop-Anwendungen mit PySide und Qt erstellen
- Fenster, Widgets und Dialoge sinnvoll einsetzen
- Benutzeroberflächen mit Layouts flexibel gestalten
- ereignisgesteuerte Abläufe mit Signals und Slots implementieren
- Menüs, Toolbars und Actions aufbauen
- Oberflächen mit Qt Designer erstellen und integrieren
- Daten mit der Model/View-Architektur darstellen
- GUI und Fachlogik voneinander trennen
- Einstellungen und Anwendungszustände verwalten
- länger laufende Aufgaben ausführen, ohne die Oberfläche zu blockieren
- Fehlerbehandlung und Logging in Desktop-Anwendungen integrieren
- GUI-Anwendungen testbar strukturieren
- Python-Desktop-Anwendungen für die Weitergabe vorbereiten
06 FAQ
Häufige Fragen
Wird PySide oder PyQt verwendet?
Der Kurs verwendet PySide. Die grundlegenden Qt-Konzepte sind weitgehend identisch, sodass sich viele Inhalte auch auf PyQt übertragen lassen.
Muss ich Qt bereits kennen?
Nein. Der Kurs beginnt mit dem Aufbau einer Qt-Anwendung und führt schrittweise zu komplexeren Oberflächen und Anwendungsstrukturen.
Wird Qt Designer verwendet?
Ja. Neben der Erstellung von Oberflächen direkt im Python-Code wird auch Qt Designer eingesetzt. Dabei wird insbesondere die saubere Trennung zwischen generierter Oberfläche und eigener Programmlogik behandelt.
Werden Threads behandelt?
Ja. Länger laufende Aufgaben sind bei Desktop-Anwendungen ein häufiges Problem. Deshalb werden QThread, Worker Objects und die Kommunikation über Signals praktisch behandelt.
Wird auch das Paketieren einer Anwendung behandelt?
Ja, im Überblick. Es wird gezeigt, welche Bestandteile für eine auslieferbare Desktop-Anwendung berücksichtigt werden müssen und wie beispielsweise PyInstaller eingesetzt werden kann.
Werden Datenbanken behandelt?
Eine Datenbank kann als Datenquelle in Beispielen verwendet werden, ist aber nicht Schwerpunkt des Kurses. Der systematische Datenbankzugriff mit Python ist Gegenstand von PY-007 „Python und Datenbanken“.
Können vorhandene Desktop-Anwendungen oder Anforderungen einbezogen werden?
Ja. Bei Inhouse-Schulungen können Beispiele und Schwerpunkte an vorhandene Anwendungen, technische Werkzeuge und Anforderungen des Teams angepasst werden.