PyQt - QFormLayout 类



QFormLayout 是一种创建两列表单的便捷方式,其中每一行都包含一个与标签关联的输入字段。按照惯例,左侧列包含标签,右侧列包含输入字段。

以下是 addRow() 方法和 addLayout() 方法的三个重载,它们常用。

序号 方法及描述
1

addRow(QLabel, QWidget)

添加一行,包含标签和输入字段

2

addRow(QLabel, QLayout)

在第二列添加子布局

3

addRow(QWidget)

添加一个跨越两列的控件

PyQt 中的文本容器和单选按钮

LineEdit() 方法创建一个单行文本输入控件容器,而 QRadioButton() 创建选项选择。这里,下面的程序使用以下组件构建 GUI 表单 - 使用 QLabel() 的控件、使用 QRadioButton() 的单选按钮和使用 QPushButton() 创建的可点击按钮。

示例

在这个示例中,程序在第一行添加了一个 LineEdit 字段用于输入姓名。然后,它在下一行的第二列中添加了一个包含两个地址字段的垂直盒子布局。接下来,在第三行的第二列中添加了一个包含两个单选按钮字段的水平盒子布局对象。第四行显示了两个按钮“提交”和“取消”。

import sys
from PyQt6.QtCore import *
from PyQt6.QtGui import *
from PyQt6.QtWidgets 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)

   # Create a button group for the radio buttons
   gender_group = QButtonGroup()

   r1 = QRadioButton("Male")
   r2 = QRadioButton("Female")

   # Add the radio buttons to the group
   gender_group.addButton(r1)
   gender_group.addButton(r2)

   hbox = QHBoxLayout()
   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()

输出

以上代码产生以下输出:

qformlayout Example One

使用 QFormLayout 类创建注册表单

每个网站都会构建一个注册表单来存储数据。它允许用户从多个位置使用信息注册表单。这里,我们使用 addrow() 方法向注册页面添加新的标签,并使用 show() 方法显示结果。

示例

在这个示例中,我们演示了如何使用 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('Enter the name:', QLineEdit(self))
      layout.addRow('Enter the Email:', QLineEdit(self))
      layout.addRow('Enter the Pincode:', QLineEdit(self, echoMode=QLineEdit.EchoMode.Password))
      layout.addRow('Enter the Mobile Number:', QLineEdit(self))
      layout.addRow(QPushButton('Sign Up Form'))

      # show the window
      self.show()
if __name__ == '__main__':
   app = QApplication(sys.argv)
   window = MainWindow()
   sys.exit(app.exec())

输出

执行代码后,我们在 PyQt 窗口中得到注册表单的结果:

Sign Up Form
广告