Topbar 顶部导航栏
适用于全站的主导航栏,默认带有深色背景和左侧 LOGO 区域。可用于桌面软件的顶部一级导航。
基础用法

from monkeyqt import MkTopbar
# 创建顶部导航栏并设置 LOGO
topbar = MkTopbar(logo_text="monkeyqt")
# 添加导航菜单项topbar.add_item("home", "首页")
topbar.add_item("docs", "文档")
topbar.add_item("plugins", "插件市场")
# 设置默认激活项
topbar.set_active("home")
API 属性与方法
MkTopbar 构造函数 &
MkTopbar(logo_text="LOGO", parent=None)
| 参数 |
类型 |
默认值 |
说明 |
logo_text |
str |
"LOGO" |
左侧展示的 Logo 文字,传 None 或空字符串可隐藏 Logo |
核心方法
| 方法名 |
参数 |
返回值 |
说明 |
add_item(item_id, text) |
(str, str) |
MkTopbarItem |
在顶部添加一个一级菜单项 |
set_active(item_id) |
(str) |
None |
代码层面设置某项为当前激活项(底部呈现蓝色高亮线) |
信号
| 信号名称 |
参数 |
说明 |
itemClicked |
(str) |
点击导航项时发射,返回被点击项的 item_id |
示例代码
以下示例展示了 MkTopbar 如何与多页面组件(如 QStackedWidget)配合使用:
import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QLabel, QStackedWidget
from monkeyqt import MkTopbar
class TopbarDemo(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("MkTopbar Demo")
self.resize(800, 500)
# 主页面容器 main_widget = QWidget()
self.setCentralWidget(main_widget)
layout = QVBoxLayout(main_widget)
layout.setContentsMargins(0, 0, 0, 0)
layout.setSpacing(0)
# 1. 创建顶部导航栏 self.topbar = MkTopbar(logo_text="Monkey Qt")
layout.addWidget(self.topbar)
# 2. 内容区域
self.stacked_widget = QStackedWidget()
layout.addWidget(self.stacked_widget, stretch=1)
# 添加不同的页面内容 self.page_home = QLabel("欢迎来到首页")
self.page_docs = QLabel("这是开发文档页面" ))
self.page_about = QLabel("关于我们")
for page in [self.page_home, self.page_docs, self.page_about]:
page.setStyleSheet("font-size: 24px; font-weight: bold; qproperty-alignment: AlignCenter;")
self.stacked_widget.addWidget(page)
# 3. 往导航栏添加项目 self.topbar.add_item("home", "首页")
self.topbar.add_item("docs", "文档")
self.topbar.add_item("about", "关于")
# 绑定切换页面信号
self.topbar.itemClicked.connect(self._on_topbar_clicked)
# 默认选中第一页 self.topbar.set_active("home")
def _on_topbar_clicked(self, item_id):
if item_id == "home":
self.stacked_widget.setCurrentWidget(self.page_home)
elif item_id == "docs":
self.stacked_widget.setCurrentWidget(self.page_docs)
elif item_id == "about":
self.stacked_widget.setCurrentWidget(self.page_about)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = TopbarDemo()
window.show()
sys.exit(app.exec())