- 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 - QBoxLayout 類
QBoxLayout 類用於水平或垂直排列小部件。此類派生自兩個不同的佈局類 - **QVBoxLayout**(用於垂直排列小部件)和 **QHBoxLayout**(用於水平排列小部件)。在使用 QBoxLayout 建構函式時,我們可以指定其方向選項,例如 LeftToRight、RightToLeft、TopToBottom 或 BottomToTop。
有時,QBoxLayout 無法管理小部件的所有子項和區域。因此,在我們向其新增任何內容之前,必須先將其新增到父佈局中。這種型別的佈局稱為 parentLayout,即 addLayout()。
QBoxLayout 中的邊距方法
QBoxLayout 還包含兩個邊距寬度 -
- **setContentsMargins()** - 此佈局用於設定外邊框的寬度。
- **setSpacing()** - 用於設定間距屬性。
下表顯示了 QBoxLayout 類的重要方法 -
| 序號 | 方法及描述 |
|---|---|
| 1 |
addWidget() 將小部件新增到 BoxLayout。 |
| 2 |
addSpacing() 建立一個空盒子,用於對話方塊。 |
| 3 |
addStretch() 建立一個空的可伸縮盒子。 |
| 4 |
addLayout() 新增另一個巢狀佈局,例如 QLayout 類,以進行幾何操作。 |
QBoxLayout 中的邊距和間距
QBoxLayout 提供了邊距和間距屬性用於佈局自定義。邊距定義佈局外部的空間,而間距控制小部件之間的間隙,增強視覺效果和可讀性。
示例
在本例中,我們演示了使用 QBoxLayout 方法設定邊距和間距。
from PyQt6.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton
app = QApplication([])
# Create a QWidget
widget = QWidget()
# Create a QVBoxLayout
layout = QVBoxLayout(widget)
# Create a QPushButton
button = QPushButton('Click me!')
# Set contents margins for the layout
layout.setContentsMargins(30, 30, 30, 30)
# Set spacing between widgets
layout.setSpacing(10)
# Add the button to the layout
layout.addWidget(button)
widget.show()
app.exec()
輸出
以上程式碼產生以下輸出 -
QBoxLayout 中的垂直按鈕
PyQt 中的 QBoxLayout 可以輕鬆建立垂直按鈕。透過垂直新增 QPushButton 控制元件,它簡化了 GUI 應用程式中垂直按鈕排列的佈局,從而增強使用者互動。
示例
在下面的示例中,我們建立了兩個按鈕,並將其新增到垂直盒子佈局中。addStretch() 方法在它們之間添加了一個可伸縮的空間。因此,如果調整頂級視窗的大小,按鈕的位置會自動重新定位。
import sys
from PyQt6.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
def window():
app = QApplication(sys.argv)
win = QWidget()
b1 = QPushButton("Button1")
b2 = QPushButton("Button2")
vbox = QVBoxLayout()
vbox.addWidget(b1)
vbox.addStretch()
vbox.addWidget(b2)
win.setLayout(vbox)
win.setWindowTitle("PyQt")
win.show()
sys.exit(app.exec())
if __name__ == '__main__':
window()
輸出
執行程式碼後,我們在 PyQt 視窗中得到兩個按鈕 -
使用 QBoxLayout 類建立水平按鈕
QBoxLayout 類可以輕鬆地將按鈕水平堆疊,從左到右排列它們,以獲得更友好的使用者介面。
示例 1
在本例中,我們可以使用水平盒子佈局,其中 addStretch() 方法在兩個按鈕物件之間插入一個可伸縮的或空的區域。因此,當視窗大小調整時,按鈕的位置會動態更改。
import sys
from PyQt6.QtWidgets import QApplication, QWidget, QPushButton, QHBoxLayout
def window():
app = QApplication(sys.argv)
win = QWidget()
b1 = QPushButton("Button1")
b2 = QPushButton("Button2")
# Button appear in horizonatal direction
hbox = QHBoxLayout()
hbox.addWidget(b1)
hbox.addStretch()
hbox.addWidget(b2)
win.setLayout(hbox)
win.setWindowTitle("PyQt")
win.show()
sys.exit(app.exec())
if __name__ == '__main__':
window()
輸出
執行程式碼後,我們在水平方向上看到兩個按鈕 -
示例 2
以下示例展示瞭如何巢狀佈局。這裡,兩個按鈕被新增到垂直盒子佈局中。然後,一個包含兩個按鈕和一個可伸縮空區域的水平盒子佈局物件被新增到其中。最後,透過 setLayout() 方法將垂直盒子佈局物件應用於頂級視窗。
import sys
from PyQt6.QtWidgets import QApplication, QWidget, QPushButton, QHBoxLayout, QVBoxLayout
def window():
app = QApplication(sys.argv)
win = QWidget()
b1 = QPushButton("Button1")
b2 = QPushButton("Button2")
vbox = QVBoxLayout()
vbox.addWidget(b1)
vbox.addStretch()
vbox.addWidget(b2)
hbox = QHBoxLayout()
b3 = QPushButton("Button3")
b4 = QPushButton("Button4")
hbox.addWidget(b3)
hbox.addStretch()
hbox.addWidget(b4)
vbox.addStretch()
vbox.addLayout(hbox)
win.setLayout(vbox)
win.setWindowTitle("PyQt")
win.show()
sys.exit(app.exec())
if __name__ == '__main__':
window()
輸出
以上程式碼產生以下輸出 -