PyQt5编程(26):在窗口中布局组件—表单对齐

QFormLayout类用来管理输入型组件和关联标签组成的Form表单。 默认容器由两列组成:第一列为关联输出标签,第二列为输入型组件。 如果关联标签文本中的某个字母之前有"&"字符(显示为带下划线的字母),则此 通过按组合快捷键(Alt + 字母),可将光标移到标签右侧的输入型组件。该类的继承层次结构如下:
(QObject,QLayoutltem) - QLayout - QFormLayout
构造函数为:
QFormLayout([[QWidget  parent])
 与QHBoxLayout和QVBoxLayout一样,不是QWidget类的继承者,因此没有自己的窗口,不能单独使用。 因此,容器作为子控件使用。要在构造函数中指定父组件。如果没有,可将容器作参数,调用父组件的setLayout( )方法。使用示例:

-- coding: utf-8 --

from PyQt5 import QtWidgets
import sys
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget()
window.setWindowTitle("QFormLayout")
window.resize(300, 150)
lineEdit = QtWidgets.QLineEdit()
textEdit = QtWidgets.QTextEdit()
button1 = QtWidgets.QPushButton("&Send")
button2 = QtWidgets.QPushButton("&Clear")
hbox = QtWidgets.QHBoxLayout()
hbox.addWidget(button1)
hbox.addWidget(button2)
form = QtWidgets.QFormLayout()
form.addRow("&Name:", lineEdit)
form.addRow("&Description:", textEdit)
form.addRow(hbox)
window.setLayout(form)
window.show()
sys.exit(app.exec_())
运行后的效果:
PyQt5编程(26):在窗口中布局组件—表单对齐

该类有以下方法(详见http://doc.qt.io/qt-5/qformlayout.html):

addRow( ) - 添加到容器的末尾。格式有:

addRow(QString  labelText, QWidget field)
addRow(QWidget label, QWidget field)
addRow(QWidget  widget)
addRow(QString  labelText, QLayout field)
addRow(QWidget label, QLayout field)
addRow(QLayout  widget)

  格式1,4可以通过“&”字母实现与输入型组件的关联。格式2,4则需要通过标签组件的setBuddy( )方法实现关联。

insertRow( ) - 添加到容器的指定位置。格式有:
    insertRow(int row,QString  labelText, QWidget field)
    insertRow(int row,QWidget label, QWidget field)
    insertRow(int row,QWidget  widget)
    insertRow(int row,QString  labelText, QLayout field)
    insertRow(int row,QWidget label, QLayout field)
    insertRow(int row,QLayout  widget)

  格式1,4可以通过“&”字母实现与输入型组件的关联。格式2,4则需要通过标签组件的setBuddy( )方法实现关联。如果参数1超出范围,则添加到容器的末尾。

QFormLayout类用来管理输入型组件和关联标签组成的Form表单。 默认容器由两列组成:第一列为关联输出标签,第二列为输入型组件。 如果关联标签文本中的某个字母之前有"&"字符(显示为带下划线的字母),则此 通过按组合快捷键(Alt + 字母),可将光标移到标签右侧的输入型组件。该类的继承层次结构如下:
(QObject,QLayoutltem) - QLayout - QFormLayout

构造函数为:

QFormLayout([

[QWidget

p

arent])
与QHBoxLayout和QVBoxLayout一样,不是QWidget类的继承者,因此没有自己的窗口,不能单独使用。 因此,容器作为子控件使用。要在构造函数中指定父组件。如果没有,可将容器作参数,调用父组件的setLayout( )方法。使用示例:

# -- coding: utf-8 --

from PyQt5 import QtWidgets

import sys

app = QtWidgets.QApplication(sys.argv)

window = QtWidgets.QWidget()

window.setWindowTitle("QFormLayout")

window.resize(300, 150)

lineEdit = QtWidgets.QLineEdit()

textEdit = QtWidgets.QTextEdit()

button1 = QtWidgets.QPushButton("&Send")

button2 = QtWidgets.QPushButton("&Clear")

hbox = QtWidgets.QHBoxLayout()

hbox.addWidget(button1)

hbox.addWidget(button2)

form = QtWidgets.QFormLayout()

form.addRow("&Name:", lineEdit)

form.addRow("&Description:", textEdit)

form.addRow(hbox)

window.setLayout(form)

window.show()

sys.exit(app.exec_())

运行后的效果:

PyQt5编程(26):在窗口中布局组件—表单对齐_第1张图片
PyQt5编程(26):在窗口中布局组件—表单对齐

该类有以下方法(详见http://doc.qt.io/qt-5/qformlayout.html):

  • addRow( ) - 添加到容器的末尾。格式有:
  1. addRow(QString labelText, QWidget field)
  2. addRow(QWidget label, QWidget field)
  3. addRow(QWidget widget)
  4. addRow(QString labelText, QLayout field)
  5. addRow(QWidget label, QLayout field)
  6. addRow(QLayout widget)

格式1,4可以通过“&”字母实现与输入型组件的关联。格式2,4则需要通过标签组件的setBuddy( )方法实现关联。

  • insertRow( ) - 添加到容器的指定位置。格式有:
    1. insertRow(int row,QString labelText, QWidget field)
    2. insertRow(int row,QWidget label, QWidget field)
    3. insertRow(int row,QWidget widget)
    4. insertRow(int row,QString labelText, QLayout field)
    5. insertRow(int row,QWidget label, QLayout field)
    6. insertRow(int row,QLayout widget)

格式1,4可以通过“&”字母实现与输入型组件的关联。格式2,4则需要通过标签组件的setBuddy( )方法实现关联。如果参数1超出范围,则添加到容器的末尾。

你可能感兴趣的:(PyQt5编程(26):在窗口中布局组件—表单对齐)