Layout: QGridLayout === | Column 1 | Column 2 | | -------- | -------- | | `addWidget(QWidget, int r, int c)` | 加入一個元件於 `(r, c)` 相對位置上 | | `addWidget(QWidget, int r, int c, int rowspan, int columnspan)` | 加入一個元件於 `(r, c)` 相對位位置上,且可以對此元件做縮排。`rowspan` 為負數代表跨列 ( `columnspa` 則跨行),請參考下面範例 | ```python import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * def window(): app = QApplication(sys.argv) win = QWidget() grid = QGridLayout() grid.addWidget(QPushButton("0,0"), 0, 0) grid.addWidget(QPushButton("0,1"), 0, 1) grid.addWidget(QPushButton("0,2"), 0, 2) # 第三個參數1: 維持一列 # 第四個參數3: 延伸三行 grid.addWidget(QPushButton("1,3"), 1, 0, 1, 3) # 第三個參數-1: 橫跨列 # 第四個參數 1: 維持一行 grid.addWidget(QPushButton("2,0"), 2, 0, -1, 1) grid.addWidget(QPushButton("2,1"), 2, 1) grid.addWidget(QPushButton("2,2"), 2, 2) # 第三個參數-1: 橫跨列 # 第四個參數-1: 橫跨行 grid.addWidget(QPushButton("3,1"), 3, 1, -1, -1) win.setLayout(grid) win.setWindowTitle("PyQt") win.show() sys.exit(app.exec_()) if __name__ == '__main__': window() ``` ![](https://i.imgur.com/4BVSeCF.png) ## Ref. [https://www.tutorialspoint.com/pyqt5/pyqt5\_qgridlayout\_class.htm](https://www.tutorialspoint.com/pyqt5/pyqt5\_qgridlayout\_class.htm) [https://www.delftstack.com/zh-tw/tutorial/pyqt5/pyqt-grid-layout/](https://www.delftstack.com/zh-tw/tutorial/pyqt5/pyqt-grid-layout/) ###### tags: `PyQt5`