PyQt6 und Python

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:

Ein mit PyQt6 erzeugtes Fenster in Windows 11

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.