Python QT

Qt (wie „cute“ im Englischen) ist ein auf C++ basierendes Rahmenwerk an Modulen und Bibliotheken zur plattformübergreifenden Software Entwicklung.

Ereignisschleife (event loop)

Der Kern jeder QT Anwendung ist die QApplication Klasse.
Jede Aplikation benötigt ein – und nur ein – QApplication Objekt. Dieses Objekt hält die Ereignisschleife in der App.
Das window.show() muss immer eingetragen werden. Ohne diese Aktivierung ist das Fenster nicht zu sehen.

QMainWindow hat die Möglichkeit ein Menu zu erstellen

import sys 
from PyQt6.QtWidgets import QApplication, QMainWindow, QLabel
from PyQt6.QtCore import Qt

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Qt Demo")
        label = QLabel("Guten Tag")
        label.setAlignment(Qt.AlignmentFlag.AlignCenter)  
        self.setCentralWidget(label)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = MainWindow()
    win.show()
    sys.exit(app.exec())

Lass mich den Code für dich aufschlüsseln und erklären, was jeder Teil macht.

Importiere die notwendigen Module

import sys
from PyQt6.QtWidgets import QApplication, QMainWindow, QLabel
from PyQt6.QtCore import Qt
  • sys: Wird verwendet, um auf einige Systemfunktionen zuzugreifen, wie z.B. die Übergabe von Argumenten an das Programm.
  • PyQt6.QtWidgets: Importiert Klassen für grafische Benutzeroberflächen-Elemente (Widgets), wie QApplication, QMainWindow, und QLabel.
  • PyQt6.QtCore: Importiert Kernfunktionen und Klassen, einschließlich der Qt-Klasse Qt, die verschiedene Konstanten bereitstellt.

Definiere die Hauptfensterklasse

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Qt Demo")
        label = QLabel("Guten Tag")
        label.setAlignment(Qt.AlignmentFlag.AlignCenter)
        self.setCentralWidget(label)
  • class MainWindow(QMainWindow): Definiert eine Klasse MainWindow, die von QMainWindow erbt. QMainWindow ist ein Hauptfensterobjekt in einer Qt-Anwendung und bietet eine Standardfensterstruktur.
  • def init(self): Der Konstruktor der Klasse. Er wird aufgerufen, wenn eine Instanz der Klasse erstellt wird.
  • super().init(): Ruft den Konstruktor der Elternklasse (QMainWindow) auf. Das ist notwendig, um sicherzustellen, dass alle Funktionalitäten der Elternklasse initialisiert werden.
  • self.setWindowTitle(„Qt Demo“): Setzt den Fenstertitel auf „Qt Demo“.
  • label = QLabel(„Guten Tag“): Erstellt ein QLabel-Objekt mit dem Text „Guten Tag“. Ein QLabel ist ein einfaches Text- oder Bild-Element.
  • label.setAlignment(Qt.AlignmentFlag.AlignCenter): Richtet den Text im Label mittig aus. Die Ausrichtungsflagge wird mit Qt.AlignmentFlag.AlignCenter gesetzt.
  • self.setCentralWidget(label): Setzt das Label als zentrales Widget im Hauptfenster. In einem QMainWindow ist das zentrale Widget der Hauptinhalt des Fensters.

Erstelle die Anwendung und starte die Ereignisschleife

if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = MainWindow()
    win.show()
    sys.exit(app.exec())
  • if name == „main“: Ein gängiges Python-Idiom, das sicherstellt, dass dieser Codeblock nur ausgeführt wird, wenn das Skript direkt gestartet wird und nicht importiert wird.
  • app = QApplication(sys.argv): Erstellt eine QApplication-Instanz. QApplication ist die Basisklasse für alle Qt-Anwendungen und wird benötigt, um die Haupt-Ereignisschleife zu starten. sys.argv ermöglicht es der Anwendung, Befehlszeilenargumente zu verarbeiten.
  • win = MainWindow(): Erstellt eine Instanz des MainWindow.
  • win.show(): Zeigt das Hauptfenster auf dem Bildschirm an.
  • sys.exit(app.exec()): Startet die Haupt-Ereignisschleife der Anwendung mit app.exec(), die Benutzereingaben verarbeitet, und beendet die Anwendung sicher, wenn das Fenster geschlossen wird, indem es sys.exit() aufruft.

Der Code erstellt ein einfaches Fenster mit dem Titel „Qt Demo“, das den Text „Guten Tag“ zentriert anzeigt. Lass es mich wissen, wenn du noch mehr Fragen hast!