PyQt5-Fenster mit QMainWindow erstellen

Im Blogbeitrag „Qt5 und Python“ wurde gezeigt, wie ein schlichtes Fenster mithilfe des Widgets QWidget erstellt werden kann. In der Praxis würde man aber hinsichtlich des Hauptfensters der Applikation eher auf QMainWindow zurückgreifen, da dieses Widget bereits über für ein Fenster typische Komponenten verfügt. Ein schlichtes Fenster ohne irgendwelche „Extras“ könnte folgendermaßen realisiert werden:

import sys
from PyQt5.QtCore import QSize
from PyQt5.QtWidgets import QApplication, QMainWindow


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        # Fenstertitel
        self.setWindowTitle("Mein Programm")

        # Fenstergröße
        self.setFixedSize(QSize(800, 600))

app = QApplication(sys.argv)

# Instanz erzeugen und Fenster anzeigen
window = MainWindow()
window.show()

# Event loop starten
app.exec_()

Der Code ist dem im QWidget-Beispiel ähnlich. Es wird eine Klasse MainWindow (Subklasse von QMainWindow) erzeugt. In der Funktion __init__() werden Fenstertitel und Fenstergröße festgelegt, wobei die Größe nicht verändert werden kann.

Jede Qt-Applikation benötigt ein QApplication-Objekt, das für die Ereignis-Schleife (event loop) verantwortlich ist. Damit ist QApplication im Grunde das Kernstück einer jeden Qt-Applikation. Anschließend wird mit window = MainWindow() eine Instanz der Klasse erzeugt und mit window.show() sichergestellt, dass das Fenster auch angezeigt wird. Die Ereignis-Schleife wird schließlich mit app.exec_() gestartet.

Weitere Artikel zu PyQt5