PuQt5 表格布局深入:让组件可以跨度多行多列

2020-04-02  本文已影响0人  _Mirage

重点是 一个grid布局的setSpacing方法,作用是设置各个组件之间的间隙(空格),
然后是grid布局的addWidget方法的后两个参数不设置的话默认是1, 1,即是row方向填充1, column方向填充1(也就是没填充), 如果设置成别的就相当于填充了, 填充了之后相当于和其他跨度为1的组件在某方向上的变化了多少倍(大概是这样).

代码:

# coding='utf-8'


from PyQt5.QtWidgets import QWidget,\
    QApplication, QLabel, QTextEdit, QGridLayout, QLineEdit
import sys


class Gui(QWidget):
    def __init__(self):
        super(Gui, self).__init__()
        self.start()

    def start(self):
        # 所有的label
        labels = [
            QLabel('标题'),
            QLabel('作者'),
            QLabel('内容'),
        ]

        # 所有的行编辑器
        line_edits = [
            QLineEdit(),
            QLineEdit(),
        ]

        # 所有的多行编辑器
        text_edits = [
            QTextEdit()
        ]

        # 实例化表格布局
        grid = QGridLayout()
        # 设置组件之间的空格为10个像素
        grid.setSpacing(10)

        # 放置第一行的组件,没有跨度
        grid.addWidget(labels[0], 1, 0)
        grid.addWidget(line_edits[0], 1, 1)

        # 放置第二行的组件,也没有跨度
        grid.addWidget(labels[1], 2, 0)
        grid.addWidget(line_edits[1], 2, 1)

        # 放置第三行的组件,组件在row方向上有跨度,\
        # 跨度是row跨5行(是前面的5倍),column跨1行(和前面一样了)
        grid.addWidget(labels[2], 3, 0)
        grid.addWidget(text_edits[0], 3, 1, 5, 1)

        # 将QWidget的布局设置成grid布局
        self.setLayout(grid)

        # 设置具体的位置和大小
        self.setGeometry(300, 300, 350, 300)
        self.setWindowTitle('gird跨多行')
        self.show()


win = QApplication(sys.argv)
gui = Gui()
sys.exit(win.exec_())

运行结果:


image.png
上一篇 下一篇

猜你喜欢

热点阅读