- PyQt 教程
- PyQt - 首頁
- PyQt - 簡介
- PyQt - 環境搭建
- PyQt - Hello World
- PyQt - 主要類
- PyQt - 使用 Qt Designer
- PyQt - 元物件
- PyQt 訊號與槽
- PyQt - 訊號和槽
- PyQt - 支援和訊號
- PyQt - 未繫結和已繫結訊號
- PyQt - 使用 PyQtSignal 建立新的訊號
- PyQt - 連線、斷開和發射訊號
- PyQt - 槽裝飾器
- PyQt - 槽連線
- PyQt 佈局
- PyQt - 佈局管理
- PyQt - QBoxLayout
- PyQt - QGridLayout
- PyQt - QFormLayout
- PyQt - QHBoxLayout
- PyQt - QVBoxLayout
- PyQt - QStackedLayout
- PyQt - QGraphicsGridLayout
- PyQt - QGraphicsAnchorLayout
- PyQt - QGraphicsLayout
- PyQt - QGraphicsLinearLayout
- PyQt 基本控制元件
- PyQt - 基本控制元件
- PyQt - QLabel 控制元件
- PyQt - QLineEdit 控制元件
- PyQt - QPushButton 控制元件
- PyQt - QRadioButton 控制元件
- PyQt - QCheckBox 控制元件
- PyQt - QComboBox 控制元件
- PyQt - QSpinBox 控制元件
- PyQt - QMessageBox
- PyQt - QDialogButtonBox 控制元件
- PyQt - QFontComboBox 控制元件
- PyQt - QDoubleSpinBox 控制元件
- PyQt - QToolBox 控制元件
- PyQt - QDialog 類
- PyQt - QMessageBox
- PyQt - 多文件介面
- PyQt - 拖放操作
- PyQt 繪圖 API
- PyQt - 繪圖 API
- PyQt 資料庫
- PyQt - 資料庫操作
- PyQt 核心知識
- PyQt - BrushStyle 常量
- PyQt - QClipboard
- PyQt - QPixmap 類
- PyQt 有用資源
- PyQt - 快速指南
- PyQt - 有用資源
- PyQt - 討論
PyQt - 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) 在指定行和列添加布局物件 |
QGridLayout 中的列方法
QGridLayout 包含兩個列方法:
- **setColumnMinimumWidth()** - 設定容器的最小寬度。
- **setColumnStretch()** - 設定列將獲得的超出其必要的額外空間量。
使用巢狀迴圈和 setGeometry() 方法的網格佈局
網格佈局是使用 setGeometry() 方法構造的,此方法指的是 pushbutton 的大小和位置。因此,我們使用巢狀 for 迴圈和 addWidget() 方法來執行此任務。
示例
在下面的示例中,我們建立了一個包含 16 個按鈕的網格佈局,這些按鈕排列在 4 行 4 列中。
import sys
from PyQt6.QtWidgets import QApplication, QWidget, QGridLayout, QPushButton
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 迴圈分別表示行和列號,用變數 **i** 和 **j** 表示。它們被轉換為字串以連線每個按鈕的標題,該按鈕將新增到第 i 行和第 j 列。
使用 QGridLayout 的兩列布局
兩列布局使用高度相等、寬度相等且在計算機或移動螢幕上並排可見的列。在 PyQt 中,我們將盒子組分成兩列,這可以透過 QGridLayout 類的各種內建函式構建 - QGridLayout()、QPushButton()、setLayout() 和 setLayout()。
示例
以下示例演示了使用 QGridlayout 的兩列布局程式碼。
from PyQt6.QtWidgets import QApplication, QWidget, QGridLayout, QPushButton
class TwoColumnLayout(QWidget):
def __init__(self):
super().__init__()
# Create a QGridLayout instance
layout = QGridLayout()
# Add widgets to the layout
for i in range(10):
layout.addWidget(QPushButton(f'Box {i+1}'), i // 2, i % 2)
# Set the layout on the application's window
self.setLayout(layout)
app = QApplication([])
window = TwoColumnLayout()
window.setWindowTitle('PyQt')
window.show()
app.exec()
輸出
以上程式碼產生以下輸出: