PyQt5 bietet leistungsstarke Layout-Manager zur effektiven Anordnung von Widgets. Box-Layouts, insbesondere QVBoxLayout
(vertikal) und QHBoxLayout
(horizontal), sind fundamental für die Erstellung strukturierter Benutzeroberflächen. Dieses Tutorial behandelt diese Layouts, demonstriert deren Verwendung und zeigt, wie die Widget-Ausrichtung gesteuert werden kann.
Inhaltsverzeichnis:
- Vertikales Box-Layout (QVBoxLayout)
- Horizontales Box-Layout (QHBoxLayout)
- Steuerung der Widget-Ausrichtung
- Verschachtelte Layouts für komplexe Benutzeroberflächen
Vertikales Box-Layout (QVBoxLayout)
QVBoxLayout
ordnet Widgets vertikal an und stapelt sie übereinander. Dies ist ideal für die Erstellung von Formularen, Listen oder allen Szenarien, die eine Spaltenanordnung erfordern.
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QPushButton
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Beispiel für vertikales Box-Layout")
layout = QVBoxLayout()
layout.addWidget(QLabel("Dies ist ein Label."))
layout.addWidget(QPushButton("Klick mich!"))
layout.addWidget(QLabel("Ein weiteres Label."))
window.setLayout(layout)
window.show()
sys.exit(app.exec_())
Dieser Code erstellt ein Fenster mit einem vertikalen Layout, das ein Label, eine Schaltfläche und ein weiteres Label enthält.
Horizontales Box-Layout (QHBoxLayout)
QHBoxLayout
ordnet Widgets horizontal an und platziert sie nebeneinander. Verwenden Sie dies für Symbolleisten, die Gruppierung verwandter Steuerelemente oder die Anordnung von Widgets in einer Reihe.
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QLabel, QPushButton
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Beispiel für horizontales Box-Layout")
layout = QHBoxLayout()
layout.addWidget(QLabel("Label 1"))
layout.addWidget(QPushButton("Button 1"))
layout.addWidget(QLabel("Label 2"))
window.setLayout(layout)
window.show()
sys.exit(app.exec_())
Dieses Beispiel ähnelt dem vorherigen, verwendet aber QHBoxLayout
für eine horizontale Anordnung.
Steuerung der Widget-Ausrichtung
Widgets in Box-Layouts sind standardmäßig oben/links ausgerichtet. Um die Ausrichtung zu steuern, verwenden Sie die Methode setAlignment()
mit Flags wie Qt.AlignHCenter
(horizontal zentriert), Qt.AlignVCenter
(vertikal zentriert) oder Kombinationen davon. Dies zentriert das Widget innerhalb seines zugewiesenen Platzes im Layout.
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QLabel, QPushButton, Qt
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Beispiel für Widget-Ausrichtung")
layout = QHBoxLayout()
label = QLabel("Zentriertes Label")
layout.addWidget(label)
layout.setAlignment(label, Qt.AlignHCenter | Qt.AlignVCenter)
button = QPushButton("Button")
layout.addWidget(button)
window.setLayout(layout)
window.show()
sys.exit(app.exec_())
Dieses Beispiel zentriert ein Label sowohl horizontal als auch vertikal innerhalb des Layouts.
Verschachtelte Layouts für komplexe Benutzeroberflächen
Für komplexere Benutzeroberflächen verschachteln Sie Layouts ineinander. Dies ermöglicht komplizierte Anordnungen und eine feingranulare Steuerung der Widget-Platzierung.
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QLabel, QPushButton
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Beispiel für verschachtelte Layouts")
mainLayout = QVBoxLayout()
# Horizontales Layout für den oberen Bereich
topLayout = QHBoxLayout()
topLayout.addWidget(QLabel("Oben Links"))
topLayout.addWidget(QPushButton("Oben Rechts"))
mainLayout.addLayout(topLayout)
# Vertikales Layout für den unteren Bereich
bottomLayout = QVBoxLayout()
bottomLayout.addWidget(QLabel("Unten"))
mainLayout.addLayout(bottomLayout)
window.setLayout(mainLayout)
window.show()
sys.exit(app.exec_())
Dieses Beispiel zeigt die Verschachtelung eines horizontalen Layouts in einem vertikalen Layout, um eine Benutzeroberfläche mit zwei Abschnitten zu erstellen.
Dieses Tutorial bietet eine Grundlage für die Verwendung von Box-Layouts in PyQt5. Erkunden Sie die PyQt5-Dokumentation für weitere erweiterte Layout-Optionen und -Funktionen, um anspruchsvolle und benutzerfreundliche Anwendungen zu erstellen.