Resumo : neste tutorial, você aprenderá como usar o PyQt QFormLayout
para organizar widgets em um formulário.
Introdução ao PyQt QFormLayout
Ao criar um formulário de entrada de dados, muitas vezes você precisa colocar os campos em linhas. E em cada linha, você coloca um rótulo próximo a um widget de entrada.
PyQt fornece um formulário conveniente de duas colunas que organiza os widgets em um formulário. A coluna da esquerda possui um rótulo e a coluna da direita possui um widget de entrada.
Para criar um layout de formulário, você usa QFormLayout
a classe:
layout = QFormLayout(self)
self.setLayout(layout) # self is the parent widget
Linguagem de código: Python ( python )
Adicionar widgets ao layout do formulário pode ser feito com o addRow()
método. Por exemplo:
layout.addRow('Field 1', input_widget1)
layout.addRow('Field 2', input_widget2)
Linguagem de código: Python ( python )
O addRow()
método pega uma string e um widget e cria automaticamente o QLabel
widget para a string.
Se você passar um único widget como QLabel
, o widget abrangerá automaticamente ambas as colunas. Na prática, você pode usar esse recurso para criar títulos ou rótulos de seção.
Além de oferecer comodidade, QFormLayout
segue as diretrizes de aparência da plataforma. Por exemplo, quando usados no macOS, os rótulos são justificados à direita, enquanto quando usados no Windows, os rótulos são justificados à esquerda.
Além disso, quando exibido em uma tela estreita, o layout é automaticamente recolhido em uma única coluna com rótulos acima dos widgets de entrada.
Exemplo PyQt QFormLayout
O exemplo a seguir mostra como criar um formulário de inscrição usando QFormLayout
:
import sys
from PyQt6.QtWidgets import QApplication, QWidget, QPushButton, QLineEdit, QFormLayout
class MainWindow(QWidget):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.setWindowTitle('Sign Up Form')
layout = QFormLayout()
self.setLayout(layout)
layout.addRow('Name:', QLineEdit(self))
layout.addRow('Email:', QLineEdit(self))
layout.addRow('Password:', QLineEdit(self, echoMode=QLineEdit.EchoMode.Password))
layout.addRow('Confirm Password:', QLineEdit(self, echoMode=QLineEdit.EchoMode.Password))
layout.addRow('Phone:', QLineEdit(self))
layout.addRow(QPushButton('Sign Up'))
# show the window
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
sys.exit(app.exec())
Linguagem de código: Python ( python )
Saída:
Resumo
- Use PyQt
QFormLayout
para criar formulários de entrada de dados.