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

重点是 一个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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Grid 是CSS中最强大的布局系统。它是2-Dimensional System,这意味着它可以同时处理列和行....
    邢烽朔阅读 7,412评论 0 5
  • 网格线(Grid Line) 构成网格结构的分界线。它们既可以是垂直的(“列网格线(column grid lin...
    晚溪呀阅读 4,957评论 0 0
  • 简介 CSS Grid Layout(下文称 “Grid”)是一个非常强大的双维度布局方式,目的在于消除之前通...
    阿汤哥的鼎阅读 5,150评论 0 0
  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 13,174评论 0 13
  • 简介 CSS网格布局(又名“网格”)是一个二维的基于网格的布局系统,其目的只在于完全改变我们设计基于网格的用户界面...
    礼知白阅读 3,897评论 0 0

友情链接更多精彩内容