PyQt5 Tutorials

PyQt5 Box Layouts meistern: QVBoxLayout und QHBoxLayout

Spread the love

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)

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert