PyQt - Classe QFormLayout

QFormLayouté uma maneira conveniente de criar o formulário de duas colunas, em que cada linha consiste em um campo de entrada associado a um rótulo. Por convenção, a coluna esquerda contém o rótulo e a coluna direita contém um campo de entrada. Principalmente três sobrecargas do método addRow () addLayout () são comumente usadas.

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

addRow(QLabel, QWidget)

Adiciona uma linha contendo rótulo e campo de entrada

2

addRow(QLabel, QLayout)

Adiciona um layout filho na segunda coluna

3

addRow(QWidget)

Adiciona um widget que abrange ambas as colunas

Exemplo

Este código adiciona um campo LineEdit ao nome de entrada na primeira linha. Em seguida, adiciona um layout de caixa vertical para dois campos de endereço na segunda coluna da próxima linha. Em seguida, um objeto de layout de caixa horizontal contendo dois campos de botão de rádio é adicionado na segunda coluna da terceira linha. A quarta linha mostra dois botões 'Enviar' e 'Cancelar'.

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

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

   l1 = QLabel("Name")
   nm = QLineEdit()

   l2 = QLabel("Address")
   add1 = QLineEdit()
   add2 = QLineEdit()
   fbox = QFormLayout()
   fbox.addRow(l1,nm)
   vbox = QVBoxLayout()

   vbox.addWidget(add1)
   vbox.addWidget(add2)
   fbox.addRow(l2,vbox)
   hbox = QHBoxLayout()

   r1 = QRadioButton("Male")
   r2 = QRadioButton("Female")
   hbox.addWidget(r1)
   hbox.addWidget(r2)
   hbox.addStretch()
   fbox.addRow(QLabel("sex"),hbox)
   fbox.addRow(QPushButton("Submit"),QPushButton("Cancel"))

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

if __name__ == '__main__':
   window()

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