PyQt5 - QGridLayout 类

  • 简述

    一种GridLayout类对象呈现以行和列排列的单元格网格。该类包含addWidget()方法。通过指定单元格的行数和列数,可以添加任何小部件。(可选)行和列的跨度因子(如果指定)使小部件比一个单元格更宽或更高。addWidget() 方法的两个重载如下 -
    序号 方法和描述
    1
    addWidget(QWidget, int r, int c)
    在指定的行和列添加一个小部件
    2
    addWidget(QWidget, int r, int c, int rowspan, int columnspan)
    在指定的行和列添加一个小部件,并具有指定的宽度和/或高度
    也可以在网格中的任何单元格中添加子布局对象。
    序号 方法和描述
    1
    addLayout(QLayout, int r, int c)
    在指定的行和列添加布局对象
  • 例子

    以下代码创建了一个由 16 个按钮组成的网格布局,这些按钮以 4 行 4 列的网格布局排列。
    
    import sys 
    from PyQt5.QtCore import * 
    from PyQt5.QtGui import * 
    from PyQt5.QtWidgets import *
    
    def window():
       app = QApplication(sys.argv)
       win = QWidget()
       grid = QGridLayout()
       
       for i in range(1,5):
          for j in range(1,5):
             grid.addWidget(QPushButton("B"+str(i)+str(j)),i,j)
             
       win.setLayout(grid)
       win.setGeometry(100,100,200,100)
       win.setWindowTitle("PyQt")
       win.show()
       sys.exit(app.exec_())
    
    if __name__ == '__main__':
       window()
    
    该代码对行号和列号使用两个嵌套的 for 循环,由变量ij 表示它们被转换为字符串以连接要添加到第i行和j列的每个按钮的标题。
    上面的代码产生以下输出 -
    QGridLayout 类输出