PyQt - Clase QBoxLayout

QBoxLayoutclass alinea los widgets vertical u horizontalmente. Sus clases derivadas sonQVBoxLayout (para organizar widgets verticalmente) y QHBoxLayout(para organizar widgets horizontalmente). La siguiente tabla muestra los métodos importantes de la clase QBoxLayout:

No Señor. Métodos y descripción
1

addWidget()

Agregar un widget al BoxLayout

2

addStretch()

Crea una caja estirable vacía

3

addLayout()

Agregar otro diseño anidado

Ejemplo 1

Aquí se agregan dos botones en el diseño del cuadro vertical. Se agrega un espacio vacío extensible entre ellos mediante el método addStretch (). Por lo tanto, si se cambia el tamaño de la ventana de nivel superior, la posición de los botones se reubica automáticamente.

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()

El código anterior produce la siguiente salida:

Ejemplo 2

Este ejemplo utiliza un diseño de caja horizontal. El método addStretch () inserta un espacio vacío extensible entre los dos objetos de botón. Por lo tanto, a medida que se cambia el tamaño de la ventana, el tamaño y la posición del botón cambian dinámicamente.

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()

El código anterior produce la siguiente salida:

Ejemplo 3

Este ejemplo muestra cómo se pueden anidar los diseños. Aquí, se agregan dos botones al diseño del cuadro vertical. Luego, se le agrega un objeto de diseño de cuadro horizontal con dos botones y un espacio vacío extensible. Finalmente, el objeto de diseño de cuadro vertical se aplica a la ventana de nivel superior mediante el método 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()

El código anterior produce la siguiente salida: