10.4 QGridLayout網格佈局管理器
阿新 • • 發佈:2022-04-19
一、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_())