TUTORIAL
PyQt5 Tutorial - BoxLayout
Questo tutorial introduce il layout del box PyQt5 come il layout del box orizzontale e il layout del box verticale.
In questa pagina
Introdurremo il layout del QBox come un layout a box orizzontale, un layout a box verticale e i widget stretch.
Layout box verticale - 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()
Dove,
b = QtWidgets.QPushButton("Click!")
l = QtWidgets.QLabel("Label Example")
Il QPushButton e il QLabel non vengono aggiunti alla finestra come abbiamo fatto negli ultimi capitoli. Questi due widget saranno aggiunti al layout della finestra in un secondo momento.
v_box = QtWidgets.QVBoxLayout()
Si crea un layout verticale del box - QVBoxLayout che i widget aggiunti a questo layout saranno allineati verticalmente dove il primo widget aggiunto è sopra ad altri widget.
Al momento non fa nulla, perché è solo un contenitore dove metteremo i nostri widget.
v_box.addWidget(buttonA)
v_box.addWidget(lableA)
Aggiunge il pulsante e l’etichetta al layout verticale del box v_box.
Se eseguiamo questo codice, otterremo il pulsante e l’etichetta uno sotto l’altro.
Se cambiate le dimensioni delle finestre, vedrete che questi due widget non sono più allineati.
Cambieremo il nostro codice per farlo sembrare migliore.
Box orizzontale - 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()
Dove,
h_box = QtWidgets.QHBoxLayout()
Crea una disposizione orizzontale della scatola.
h_box.addStretch()
h_box.addWidget(labelA)
h_box.addStretch()
Il widget addStretch() riempie quanto più spazio possibile in orizzontale. Due tratti prima e dopo l’etichetta occupano tanto spazio quanto necessario per lasciare l’etichetta proprio al centro della scatola orizzontale.
Centro di Allineamento Orizzontale
Un altro modo per allineare il widget al centro è impostare l’allineamento del widget come AlignCenter.
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()
Aggiunge solo due righe rispetto al primo esempio precedente,
labelA.setAlignment(QtCore.Qt.AlignCenter)
Il metodo setAlignment imposta l’allineamento del widget e QtCore.Qt.AlignCenter è il parametro di allineamento centrale del modulo QtCore che dovrebbe essere importato nel codice.
Ha esattamente lo stesso layout con l’esempio precedente.