PyQt - QFormLayout 类

QFormLayout 是一种创建两列表单的便捷方式,其中每一行包含一个与标签关联的输入字段。 按照惯例,左列包含标签,右列包含输入字段。 主要是常用的addRow()方法addLayout()的三个重载。

序号 方法 & 描述
1

addRow(QLabel, QWidget)

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

2

addRow(QLabel, QLayout)

在第二列中添加子布局

3

addRow(QWidget)

添加一个跨越两列的小部件


示例

此代码添加一个 LineEdit 字段以在第一行输入名称。 然后它为下一行的第二列中的两个地址字段添加垂直框布局。 接下来,在第三行的第二列中添加一个包含两个单选按钮字段的水平框布局对象。 第四行显示两个按钮"Submit"和"Cancel"。

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

上面的代码产生以下输出 −

QFormLayout 类输出