Einleitung
PyQt und PySide sind leistungsstarke Bibliotheken zur Erstellung plattformunabhängiger grafischer Benutzeroberflächen in Python mit dem Qt-Framework. Sie bieten Zugriff auf die umfangreichen Qt-Tools: Widgets, Ereignissysteme, Styles, Animationen, Datenbankanbindung und sogar QML für moderne Oberflächen.
Der Hauptunterschied zwischen PyQt und PySide liegt in der Lizenzierung: PyQt erfordert eine GPL- oder kommerzielle Lizenz, während PySide (die offizielle Implementierung der Qt Company) unter der liberaleren LGPL verfügbar ist – ideal für kommerzielle Projekte.
In diesem ausführlichen Leitfaden behandeln wir alle Aspekte der Arbeit mit diesen Bibliotheken: von der Installation und einfachen Oberflächen bis hin zu komplexen Projekten mit Datenbanken, Styling und dem Bau fertiger Anwendungen.
Installation und Einrichtung
Installation von PyQt5 und PyQt6
# PyQt5 (stabile Version)
pip install pyqt5 pyqt5-tools
# PyQt6 (aktuelle Version)
pip install pyqt6 pyqt6-tools
Installation von PySide2 und PySide6
# PySide2 (für Qt 5)
pip install pyside2
# PySide6 (empfohlene Version)
pip install pyside6
Installation prüfen
# Für PyQt5
from PyQt5.QtWidgets import QApplication
print("PyQt5 erfolgreich installiert")
# Für PySide6
from PySide6.QtWidgets import QApplication
print("PySide6 erfolgreich installiert")
Grundlagen der App-Entwicklung
Einfaches Fenster mit Button
PyQt5-Version
from PyQt5.QtWidgets import QApplication, QPushButton, QVBoxLayout, QWidget
import sys
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('Meine erste PyQt5-App')
self.setGeometry(100, 100, 300, 200)
layout = QVBoxLayout()
button = QPushButton('Klick mich')
button.clicked.connect(self.on_click)
layout.addWidget(button)
self.setLayout(layout)
def on_click(self):
print("Button wurde geklickt!")
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
PySide6-Version
from PySide6.QtWidgets import QApplication, QPushButton, QVBoxLayout, QWidget
import sys
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('Meine erste PySide6-App')
self.setGeometry(100, 100, 300, 200)
layout = QVBoxLayout()
button = QPushButton('Klick mich')
button.clicked.connect(self.on_click)
layout.addWidget(button)
self.setLayout(layout)
def on_click(self):
print("Button wurde geklickt!")
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
Architektur von Qt-Anwendungen
Grundlegende Komponenten
QApplication ist das zentrale Objekt jeder Qt-Anwendung. Es verwaltet die Ereignisschleife, verarbeitet Systemereignisse und koordiniert die Arbeit aller Widgets.
QWidget ist die Basisklasse für alle Elemente der Benutzeroberfläche. Es kann andere Widgets enthalten und als Container dienen.
QMainWindow ist ein spezialisiertes Widget für das Hauptfenster einer Anwendung mit Unterstützung für Menüs, Symbolleisten, Statusleiste und ein zentrales Widget.
QDialog ist die Klasse für Dialogfenster, einschließlich modaler und nicht-modaler Dialoge.
Lebenszyklus einer Anwendung
- Erstellen einer QApplication-Instanz
- Erstellen und Konfigurieren der Widgets
- Anzeigen des Hauptfensters
- Starten der Ereignisschleife mit exec() oder exec_()
- Beenden der Anwendung