PyQt5 Tutorial - BoxLayout
Wir werden das QBox
-Layout wie ein horizontales Box-Layout, ein vertikales Box-Layout und die Stretch-Widgets vorstellen.
Vertikales Box-Layout - QVBoxLayout
import sys
from PyQt5 import QtWidgets
def basicWindow():
app = QtWidgets.QApplication(sys.argv)
windowExample = QtWidgets.QWidget()
buttonA = QtWidgets.QPushButton("Click!")
labelA = QtWidgets.QLabel("Label Example")
v_box = QtWidgets.QVBoxLayout()
v_box.addWidget(buttonA)
v_box.addWidget(labelA)
windowExample.setLayout(v_box)
windowExample.setWindowTitle("PyQt5 Lesson 4")
windowExample.show()
sys.exit(app.exec_())
basicWindow()
Wo,
b = QtWidgets.QPushButton("Click!")
l = QtWidgets.QLabel("Label Example")
Die QPushButton
und Label
werden nicht wie in den letzten Kapiteln in das Fenster eingefügt. Diese beiden Widgets würden später zum Boxen-Layout hinzugefügt werden.
v_box = QtWidgets.QVBoxLayout()
Es erzeugt ein vertikales Box-Layout - QVBoxLayout
, dass die Widgets, die diesem Layout hinzugefügt werden, vertikal ausgerichtet werden, wo das zuerst hinzugefügte Widget über den anderen Widgets liegt.
Es macht im Moment nichts, weil es nur ein Container ist, in dem wir unsere Widgets platzieren werden.
v_box.addWidget(buttonA)
v_box.addWidget(lableA)
Es fügt den Button und das Label zum vertikalen Box-Layout v_box
hinzu.
Wenn wir diesen Code laufen lassen, bekommen wir den Druckknopf und das Etikett unter dem anderen.
Wenn Sie die Fenstergröße ändern, werden Sie sehen, dass diese beiden Widgets nicht mehr ausgerichtet sind.
Wir werden unseren Code ändern, damit er besser aussieht.
Horizontale Box - QHBoxLayout
import sys
from PyQt5 import QtWidgets
def basicWindow():
app = QtWidgets.QApplication(sys.argv)
windowExample = QtWidgets.QWidget()
buttonA = QtWidgets.QPushButton("Push Me")
labelA = QtWidgets.QLabel("Look at me")
h_box = QtWidgets.QHBoxLayout()
h_box.addStretch()
h_box.addWidget(labelA)
h_box.addStretch()
v_box = QtWidgets.QVBoxLayout()
v_box.addWidget(buttonA)
v_box.addLayout(h_box)
windowExample.setLayout(v_box)
windowExample.setWindowTitle("PyQt5 Lesson 4")
windowExample.show()
sys.exit(app.exec_())
basicWindow()
Wo,
h_box = QtWidgets.QHBoxLayout()
Es erzeugt ein horizontales Boxenlayout.
h_box.addStretch()
h_box.addWidget(labelA)
h_box.addStretch()
Das addStretch()
Widget füllt horizontal so viel Platz wie möglich. Zwei Dehnungen vor und nach dem Etikett nehmen soviel Platz ein wie benötigt wird um das Etikett genau in der Mitte der horizontalen Box zu belassen.
Horizontale Ausrichtung Mitte
Eine weitere Möglichkeit, das Widget in der Mitte auszurichten, ist die Ausrichtung des Widgets auf AlignCenter
zu setzen.
import sys
from PyQt5 import QtWidgets
from PyQt5 import QtCore
def basicWindow():
app = QtWidgets.QApplication(sys.argv)
windowExample = QtWidgets.QWidget()
buttonA = QtWidgets.QPushButton("Click!")
labelA = QtWidgets.QLabel("Label Example")
labelA.setAlignment(QtCore.Qt.AlignCenter)
v_box = QtWidgets.QVBoxLayout()
v_box.addWidget(buttonA)
v_box.addWidget(labelA)
windowExample.setLayout(v_box)
windowExample.setWindowTitle("AlignCenter Example")
windowExample.show()
sys.exit(app.exec_())
basicWindow()
Es werden nur zwei Zeilen im Vergleich zum ersten Beispiel oben hinzugefügt,
labelA.setAlignment(QtCore.Qt.AlignCenter)
Die setAlignment
Methode legt die Ausrichtung des Widgets fest und QtCore.Qt.AlignCenter
ist der Parameter für die Mittelausrichtung des QtCore
Moduls, das in den Code importiert werden soll.
Es hat genau das gleiche Layout wie im obigen Beispiel.
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook