跳转至

Tabs 标签页

用于在同一区域进行大块平级内容的收缩和展现。提供了简洁美观的下划线切换效果,以及内建的 QStackedWidget 内容容器管理。

基础用法

标签页预览

from PySide6.QtWidgets import QLabel
from monkeyqt import MkTabs

tabs = MkTabs()

# 添加标签页,会自动创建头部 TabButton 和内容区域关联
tabs.add_tab("tab1", "用户信息", QLabel("用户信息页面"))
tabs.add_tab("tab2", "安全设置", QLabel("安全设置页面"))

API 属性与方法

MkTabs 构造函数 &

MkTabs(parent=None)

核心方法

方法名 参数 返回值 说明
add_tab(tab_id, title, widget) (str, str, QWidget) None 添加一个新的标签页。tab_id 为该标签的唯一标识,title 为标签上显示的标题文字,widget 为切换到该标签时下方显示的组件
set_active(tab_id) (str) None 代码控制切换当前选中的标签页

信号

信号名称 参数 说明
tabChanged (str) 切换标签页时发射,参数为当前激活的 tab_id

示例代码

import sys
from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QHBoxLayout
from monkeyqt import MkTabs, MkButton

class TabsDemo(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Tabs Demo")
        self.resize(600, 400)

        layout = QVBoxLayout(self)

        # 1. 创建标签页组件        self.tabs = MkTabs()
        layout.addWidget(self.tabs)

        # 2. 为标签页准备一些页面组件        page_1 = QLabel("🎉 欢迎来到首页内容区!")
        page_2 = QLabel("⚙️ 这里是系统偏好设置中心。" ))
        page_3 = QLabel("✉️ 消息通知收件箱" ) #)

        # 调整下标签内容的排版样式
        for p in [page_1, page_2, page_3]:
            p.setStyleSheet("font-size: 16px; color: #606266; qproperty-alignment: AlignCenter;")

        # 3. 将页面添加到 Tabs
        self.tabs.add_tab("tab-home", "首页", page_1)
        self.tabs.add_tab("tab-settings", "系统设置", page_2)
        self.tabs.add_tab("tab-msg", "消息通知", page_3)

        # 4. 创建辅助操作栏        btn_layout = QHBoxLayout()
        btn_layout.addStretch()
        self.btn_switch = MkButton("代码切换到消息通知页",  type="primary")
        self.btn_switch.clicked.connect(lambda: self.tabs.set_active("tab-msg"))
        btn_layout.addWidget(self.btn_switch)
        layout.addLayout(btn_layout)

        # 绑定信号
        self.tabs.tabChanged.connect(self._on_tab_changed)

    def _on_tab_changed(self, tab_id):
        print(f"当前选中的标签页是: {tab_id}")

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