1. 程式人生 > 其它 >10.4 QGridLayout網格佈局管理器

10.4 QGridLayout網格佈局管理器

一、QGridLayout網格佈局管理器

1.基本概念

  • QGridLayout網格佈局管理器相比較上一個表單佈局管理器更像是表格。QGridLayout網格佈局管理器學習的重點就是行和列的操作,以及尺寸設定還有一些其他的小功能設定。

2.程式碼

點選檢視程式碼
from PyQt5.Qt import *
import sys


class Window(QWidget) :
    def __init__(self) :
        super().__init__()
        self.setWindowTitle("佈局管理器-網格佈局QGridLayout - PyQt5中文網")
        self.resize(600, 500)
        self.func_list()

    def func_list(self) :
        self.func()

    def func(self) :
        label1 = QLabel('標籤1', self)
        label1.setStyleSheet('background-color:green')
        label2 = QLabel('標籤2', self)
        label2.setStyleSheet('background-color:red')
        label3 = QLabel('標籤3', self)
        label3.setStyleSheet('background-color:green')

        # 1. 建構函式
        gl = QGridLayout()
        self.setLayout(gl)

        # # 2.元素操作 - 新增控制元件
        # gl.addWidget(label1)
        # gl.addWidget(label2)
        # gl.addWidget(label3)

        # # 3.按單元格新增
        # gl.addWidget(label1, 0, 0)
        # gl.addWidget(label2, 0, 1)  # 第0行,第1列
        # gl.addWidget(label3, 1, 0)

        # # 4.合併單元格
        gl.addWidget(label1, 0, 0)
        gl.addWidget(label2, 0, 1)
        gl.addWidget(label3, 1, 0, 1, 2)  # 第1行,第0列,跨1行,跨2列
        #
        # # 5.元素操作 - 添加布局
        label4 = QLabel('標籤4', self)
        label4.setStyleSheet('background-color:green')
        label5 = QLabel('標籤5', self)
        label5.setStyleSheet('background-color:red')
        label6 = QLabel('標籤6', self)
        label6.setStyleSheet('background-color:green')
        layout = QBoxLayout(QBoxLayout.TopToBottom)
        layout.addWidget(label4)
        layout.addWidget(label5)
        layout.addWidget(label6)
        gl.addLayout(layout, 2, 0, 2, 3)

        # # 6.獲取位置和條目
        print(gl.getItemPosition(2))  # 獲取第三個控制元件或佈局的位置資訊
        print(gl.itemAtPosition(0, 1).widget().text())  # 獲取第一行,第二列控制元件名稱資訊

        # # 7.尺寸設定 - 行高和列寬最小尺寸設定
        gl.setColumnMinimumWidth(1, 100)  # 設定第2列最小寬度是100
        gl.setRowMinimumHeight(1, 100)  # 設定第2行最小高度是100
        #
        # 8.尺寸設定 - 拉伸係數設定
        gl.setColumnStretch(1, 2)
        gl.setColumnStretch(0, 1)
        gl.setRowStretch(1, 2)
        gl.setRowStretch(0, 1)

        # # 9.間距控制
        # # gl.setVerticalSpacing(20)
        # # gl.setHorizontalSpacing(20)
        # gl.setSpacing(30)  # 行間距和列間距都是30

        '''
        # # 10.佈局元座標設定
        # # Qt.TopLeftCorner
        # # Qt.TopRightCorner
        # # Qt.BottomLeftCorner
        # # Qt.BottomRightCorner
        '''
        gl.setOriginCorner(Qt.TopLeftCorner)

        # # 資訊獲取
        print(gl.rowCount())
        print(gl.columnCount())


if __name__ == '__main__' :
    app = QApplication(sys.argv)
    window = Window()

    gl = window.layout()
    print(gl.cellRect(0, 1))  # 父控制元件顯示完全後才能獲取矩形區域的值

    window.show()
    sys.exit(app.exec_())

3.效果