PyQt - Classe QBoxLayout

QBoxLayoutclasse alinha os widgets verticalmente ou horizontalmente. Suas classes derivadas sãoQVBoxLayout (para organizar widgets verticalmente) e QHBoxLayout(para organizar widgets horizontalmente). A tabela a seguir mostra os métodos importantes da classe QBoxLayout -

Sr. Não. Métodos e Descrição
1

addWidget()

Adicione um widget ao BoxLayout

2

addStretch()

Cria uma caixa extensível vazia

3

addLayout()

Adicionar outro layout aninhado

Exemplo 1

Aqui, dois botões são adicionados no layout da caixa vertical. Um espaço vazio extensível é adicionado entre eles pelo método addStretch (). Portanto, se a janela de nível superior for redimensionada, a posição dos botões será realocada 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()

O código acima produz a seguinte saída -

Exemplo 2

Este exemplo usa layout de caixa horizontal. O método addStretch () insere um espaço vazio extensível entre os dois objetos de botão. Portanto, à medida que a janela é redimensionada, o tamanho e a posição do botão mudam 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()

O código acima produz a seguinte saída -

Exemplo 3

Este exemplo mostra como os layouts podem ser aninhados. Aqui, dois botões são adicionados ao layout da caixa vertical. Em seguida, um objeto de layout de caixa horizontal com dois botões e um espaço vazio extensível é adicionado a ele. Finalmente, o objeto de layout de caixa vertical é aplicado à janela de nível superior pelo 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()

O código acima produz a seguinte saída -