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
, undQLabel
. - 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 vonQMainWindow
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“. EinQLabel
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 essys.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!