Pyqt5 實現多標籤頁面

Tarzen發表於2024-09-11

實現功能

image

程式碼實現

import sys

from PyQt5.QtWidgets import QApplication, QMainWindow, QTabWidget, QVBoxLayout, QPushButton, QWidget, QLabel, \
    QDesktopWidget


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.ini_ui()

    def ini_ui(self):
        self.setWindowTitle("多標籤頁面切換")
        self.resize(800, 800)
        # 視窗移動到中心
        port = QDesktopWidget().availableGeometry().center()  # 獲取螢幕中心點
        x, y, w, h = self.frameGeometry().getRect()  # 返回視窗座標點xy和寬和高wh
        self.move(int(port.x() - w / 2), int(port.y() - h / 2))
        # 建立tab物件
        self.tab_widget = QTabWidget()
        self.setCentralWidget(self.tab_widget)  # 主要用於設定主視窗的中央部件
        # 建立連個tab page頁面,並且新增到tab中
        self.page1 = QWidget()
        self.page2 = QWidget()
        self.tab_widget.addTab(self.page1, "頁面1")
        self.tab_widget.addTab(self.page2, "頁面2")
        # 給每個page頁面新增布局、控制元件
        layout1 = QVBoxLayout()
        label1 = QLabel('頁面1顯示的內容')
        btn1 = QPushButton('點我切換到頁面2')
        btn1.clicked.connect(lambda: self.switch_page(1))
        layout1.addWidget(label1)
        layout1.addWidget(btn1)
        self.page1.setLayout(layout1)

        layout2 = QVBoxLayout()
        label2 = QLabel('頁面2顯示的內容')
        btn2 = QPushButton('點我切換到頁面1')
        btn2.clicked.connect(lambda: self.switch_page(0))
        layout2.addWidget(label2)
        layout2.addWidget(btn2)
        self.page2.setLayout(layout2)

    def switch_page(self, index):
        self.tab_widget.setCurrentIndex(index)  # QTabWidget 中,setCurrentIndex用於設定當前選中的選項卡索引


if __name__ == "__main__":
    app = QApplication(sys.argv)
    mainWin = MainWindow()
    mainWin.show()
    sys.exit(app.exec())


學習地址:

Python鬥羅

相關文章