Pyqt5 QTabWidget实现多标签页面

实现功能

image

代码实现

使用 QTabWidget 的步骤为:
1.建一个 QTabWidget
2.为每个选项卡创建一个页面(容器),通常为 QWidget(不要指定父部件)
3.把子部件插入到页面部件(即容器)中
4.使用 addTab()或 insertTab()把页面部件放入选项卡部件

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_shape = QTabWidget.Triangular  # 设置标签页为三角形
        self.tab_widget.setTabShape(tab_shape)
        # 创建连个tab page页面,并且添加到tab中
        self.page1 = QWidget()
        self.page2 = QWidget()
        self.tab_widget.addTab(self.page1, "页面1")
        self.tab_widget.addTab(self.page2, "页面2")
        self.tab_widget.currentChanged.connect(self.page_change_fun)  # 标签发生变换,就处理一些事情。

        # 给每个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)
        print(f'当前tab中的标签数量:{self.tab_widget.count()}')

    def switch_page(self, index):
        self.tab_widget.setCurrentIndex(index)  # QTabWidget 中,setCurrentIndex用于设置当前选中的选项卡索引

    def page_change_fun(self):
        page_index = self.tab_widget.currentIndex()
        print(f'当前页面标签index:{page_index}')

StyleSheet = '''
QTabBar {
    border: 0px solid #31363B;

}
QTabBar::tab:top:selected {
    color: red;
}
'''

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




self.tab_widget.addTab(self.page2, "页面2") 给Qtabwidget添加标签页面
self.tab_widget.currentChanged.connect(self.page_change_fun) 当标签发生变换,就处理一些事情。
self.tab_widget.setCurrentIndex(index) 用于设置当前选中的选项卡索引(不手动点击标签页的情况使用)

tab_shape = QTabWidget.Triangular    # 设置标签页为三角形
self.tab_widget.setTabShape(tab_shape)

学习地址:

Python斗罗

posted @ 2024-09-11 00:22  Tarzen  阅读(348)  评论(0编辑  收藏  举报