- 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 - QStackedLayout
在 PyQt 中,QStackedLayout 類可用於構建與 QTabWidget 類似的使用者介面。它還有一個便捷類,即基於 QStackedLayout 的 QStackedWidget 類。QTabWidget 類提供了一個選項卡式小部件的堆疊。
QStackedLayout 的用途
建立頁面 − QStackedLayout 具有多個子小部件,每個頁面以不同的方式執行。
# Building of Pages firstPageWidget = QWidget() secondPageWidget = QWidget() thirdPageWidget = QWidget() ''' The method QStackedLayout() create a stack of widgets where only single widgets is visible at a time.''' stackedLayout = QStackedLayout() # Using addWidgets(), we can add the widgets to the end of the list. stackedLayout.addWidget(firstPageWidget) stackedLayout.addWidget(secondPageWidget) stackedLayout.addWidget(thirdPageWidget)
請注意,QStackedLayout 類提供了一個小部件堆疊,其中一次只有一個小部件可見。
切換頁面 − QStackedLayout 沒有直接的方式供使用者在頁面之間切換。可以透過頁面的標題來實現小部件的連線,即使用setCurrentIndex() 方法。
檢索頁面 − 我們有兩種方法可以檢索 QStackedLayout 類中的頁面 −
- currentIndex() − 顯示在螢幕上的小部件的索引。
- currentWidget() − 使用此方法可以顯示實際的小部件。
使用 QStackedLayout 切換頁面
在 QStackedLayout 中,頁面切換是指從一個頁面更改到另一個頁面。在這裡,我們將看到單擊小部件時選項卡/頁面的變化。
示例 1
以下示例演示了使用 PyQt 的各種佈局函式進行頁面切換的程式碼。
import sys
from PyQt6.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout,
QPushButton, QStackedLayout
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
# Create the main window
self.setWindowTitle("Page Switcher")
self.setGeometry(200, 200, 600, 500)
# Create the stacked layout
self.stackedLayout = QStackedLayout()
# Create Page 1
self.page1Widget = QWidget()
page1Layout = QVBoxLayout()
page1Button = QPushButton("Go to Page 2")
page1Button.clicked.connect(self.switch_to_page2)
page1Layout.addWidget(page1Button)
self.page1Widget.setLayout(page1Layout)
# Create Page 2
self.page2Widget = QWidget()
page2Layout = QVBoxLayout()
page2Button = QPushButton("Go to Page 1")
page2Button.clicked.connect(self.switch_to_page1)
page2Layout.addWidget(page2Button)
self.page2Widget.setLayout(page2Layout)
# Add pages to the stacked layout
self.stackedLayout.addWidget(self.page1Widget)
self.stackedLayout.addWidget(self.page2Widget)
# Set the initial page
self.stackedLayout.setCurrentIndex(0)
# Set the central widget
centralWidget = QWidget()
centralWidget.setLayout(self.stackedLayout)
self.setCentralWidget(centralWidget)
def switch_to_page1(self):
self.stackedLayout.setCurrentIndex(0)
def switch_to_page2(self):
self.stackedLayout.setCurrentIndex(1)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec())
輸出
上述程式碼產生以下輸出 −
示例 2
在以下示例中,我們使用QPushButton()建立了兩個按鈕——上一頁和下一頁。然後我們使用 var_name.clicked.connect() 連線按鈕範圍。此函式允許使用者單擊範圍之間的按鈕。要設定佈局,已使用QVBoxLayout()並使用主視窗顯示結果。
from PyQt6.QtWidgets import QApplication, QWidget, QPushButton, QLabel, QVBoxLayout,
QStackedLayout
app = QApplication([])
# Create main window
main_window = QWidget()
main_window.setWindowTitle("QStackedLayout")
# Create widgets
widget1 = QLabel("Widget 1")
widget2 = QLabel("Widget 2")
widget3 = QLabel("Widget 3")
# Create stacked layout and add widgets to it
stacked_layout = QStackedLayout()
stacked_layout.addWidget(widget1)
stacked_layout.addWidget(widget2)
stacked_layout.addWidget(widget3)
# Create navigation buttons
next_button = QPushButton("Next")
prev_button = QPushButton("Previous")
# Connect buttons to switch between widgets
next_button.clicked.connect(lambda: stacked_layout.setCurrentIndex(stacked_layout.currentIndex() + 1))
prev_button.clicked.connect(lambda: stacked_layout.setCurrentIndex(stacked_layout.currentIndex() - 1))
# Create a vertical layout for the main window
main_layout = QVBoxLayout(main_window)
main_layout.addLayout(stacked_layout)
main_layout.addWidget(prev_button)
main_layout.addWidget(next_button)
# Set the main layout for the main window
main_window.setLayout(main_layout)
main_window.show()
app.exec()
輸出
執行程式碼後,我們將獲得兩個範圍為 1-3 的按鈕。
廣告