Mittlerweile ist PyQt6 seit einiger Zeit verfügbar, so dass es an der Zeit war, die bisherigen PyQt5-Beiträge zu aktualisieren. Den Anfang macht wieder ein simples Fenster.
Doch zunächst sollte, sofern nicht bereits geschehen, PyQt6 installiert werden:
$ pip install PyQt6 # Windows
$ pip3 install PyQt6 # macOS
Starten wir mit einem Grundgerüst, bestehend aus den Importanweisungen, der Funktion main()
und der Klasse SimpleWindow
:
#!/usr/bin/env python3
import sys
from PyQt6.QtWidgets import (QWidget QApplication)
class SimpleWindow(QWidget):
pass
def main():
app = QApplication(sys.argv)
_ = SimpleWindow()
sys.exit(app.exec())
if __name__ == "__main__":
main()
Zunächst wird eine Instanz von QApplication()
erzeugt:
app = QApplication(sys.argv)
Dabei handelt es sich um eine Liste mit zu übergebenden Kommandozeilen-Argumenten. Diese Instanz wird der Parameter sys.arg
übergeben. Falls keine Argumente übergeben werden, kann auch
app = QApplication([])
geschrieben werden.
Darüber hinaus ist eine Instanz der Klasse SimpleWindow
erforderlich. Diese Klasse gilt es dann mit Leben zu füllen:
def __init__(self):
super().__init__()
self.title = "Qt6-Fenster"
self.left = 300
self.top = 300
self.width = 600
self.height = 400
self.initUI()
Über die Zeile
self.title = "Qt6-Fenster"
wird dem Fenster ein Titel zugewiesen. Es folgen dann die Angaben für die Position auf dem Desktop sowie die Breite und die Höhe des Fensters. Zum Schluss erfolgt der Aufruf der Methode initUI()
:
def initUI(self):
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)
self.show()
Diese Methode sorgt dafür, dass die zuvor definierten Werte auch tatsächlich gesetzt werden. Wichtig ist self.show()
. Erst durch diesen Aufruf erscheint tatsächlich das Fenster, das in Windows 11 so aussieht:
Der komplette Code dazu sieht wie folgt aus:
#!/usr/bin/env python3
import sys
from PyQt6.QtWidgets import QWidget, QApplication
class SimpleWindow(QWidget):
def __init__(self):
super().__init__()
self.title = "Qt6-Fenster"
self.left = 300
self.top = 300
self.width = 600
self.height = 400
self.initUI()
def initUI(self):
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)
self.show()
def main():
app = QApplication(sys.argv)
_ = SimpleWindow()
sys.exit(app.exec())
if __name__ == "__main__":
main()
Als Fazit kann also festgehalten werden, dass die Erzeugung eines einfachen Fensters nicht sonderlich schwierig ist. Die hier gezeigten Beispiele sollten sowohl auf Linux als auch auf macOS und Windows laufen.
Auch wenn mit dem hier verwendeten QWidget
ein Fenster erzeugt werden kann, würde man in der Praxis für das Erstellen eines Hauptfensters eher QMainWindow
nutzen, ein Widget, das alle für ein Fenster erforderlichen Standardkomponenten beinhaltet.