PyQt - Classe QBoxLayout

QBoxLayoutclass allinea i widget verticalmente o orizzontalmente. Le sue classi derivate sonoQVBoxLayout (per disporre i widget verticalmente) e QHBoxLayout(per disporre i widget in orizzontale). La tabella seguente mostra i metodi importanti della classe QBoxLayout -

Sr.No. Metodi e descrizione
1

addWidget()

Aggiungi un widget al BoxLayout

2

addStretch()

Crea una scatola elastica vuota

3

addLayout()

Aggiungi un altro layout nidificato

Esempio 1

Qui vengono aggiunti due pulsanti nel layout del riquadro verticale. Uno spazio vuoto estensibile viene aggiunto tra di loro dal metodo addStretch (). Pertanto, se la finestra di primo livello viene ridimensionata, la posizione dei pulsanti viene riposizionata automaticamente.

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

def window():
   app = QApplication(sys.argv)
   win = QWidget()
	
   b1 = QPushButton("Button1")
   b2 = QPushButton("Button2")
   
   vbox = QVBoxLayout()
   vbox.addWidget(b1)
   vbox.addStretch()
   vbox.addWidget(b2)
   win.setLayout(vbox)

   win.setWindowTitle("PyQt")
   win.show()
   sys.exit(app.exec_())

if __name__ == '__main__':
   window()

Il codice precedente produce il seguente output:

Esempio 2

Questo esempio utilizza il layout della casella orizzontale. Il metodo addStretch () inserisce uno spazio vuoto estensibile tra i due oggetti pulsante. Quindi, quando la finestra viene ridimensionata, la dimensione e la posizione del pulsante cambiano dinamicamente.

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

def window():
   app = QApplication(sys.argv)
   win = QWidget()
   
   b1 = QPushButton("Button1")
   b2 = QPushButton("Button2")

   hbox = QHBoxLayout()

   hbox.addWidget(b1)
   hbox.addStretch()
   hbox.addWidget(b2)
   win.setLayout(hbox)
   win.setWindowTitle("PyQt")
   win.show()
   sys.exit(app.exec_())
	
if __name__ == '__main__':
   window()

Il codice precedente produce il seguente output:

Esempio 3

Questo esempio mostra come i layout possono essere nidificati. Qui vengono aggiunti due pulsanti al layout del riquadro verticale. Quindi, viene aggiunto un oggetto di layout box orizzontale con due pulsanti e uno spazio vuoto estensibile. Infine, l'oggetto layout box verticale viene applicato alla finestra di primo livello dal metodo setLayout ().

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

def window():
   app = QApplication(sys.argv)
   win = QWidget()

   b1 = QPushButton("Button1")
   b2 = QPushButton("Button2")
	
   vbox = QVBoxLayout()
   vbox.addWidget(b1)
   vbox.addStretch()
   vbox.addWidget(b2)
   hbox = QHBoxLayout()
	
   b3 = QPushButton("Button3")
   b4 = QPushButton("Button4")
   hbox.addWidget(b3)
   hbox.addStretch()
   hbox.addWidget(b4)

   vbox.addStretch()
   vbox.addLayout(hbox)
   win.setLayout(vbox)

   win.setWindowTitle("PyQt")
   win.show()
   sys.exit(app.exec_())

if __name__ == '__main__':
   window()

Il codice precedente produce il seguente output: