跳转至

Dropdown 下拉菜单

将动作或折叠多余的操作收纳在下拉菜单中,点击后弹出一个轻量级的菜单列表进行操作。

基础用法

下拉菜单预览

from monkeyqt import MkDropdown

# 创建一个显示文本为 "操作" 的下拉菜单dropdown = MkDropdown(text="操作")

# 添加子菜单项
dropdown.add_item("编辑", "edit")
dropdown.add_item("分享", "share")
dropdown.add_separator() # 添加分割线
dropdown.add_item("删除", "delete")

# 绑定信号
dropdown.itemClicked.connect(lambda action_id: print(f"点击了操作: {action_id}"))

API 属性与方法

MkDropdown 构造函数 &

MkDropdown(text="Dropdown", parent=None)
参数 类型 默认值 说明
text str "Dropdown" 下拉菜单按钮默认显示的文字

核心方法

方法名 参数 返回值 说明
add_item(text, item_id="") (str, str) QAction 添加菜单项。若 item_id 未指定,则默认使用 text 作为信号发射值
add_separator() () QAction 添加一条水平分割线

信号

信号名称 参数 说明
itemClicked (str) 当下拉菜单中的菜单项被点击时发射该信号,携带被点击项的 item_id

示例代码

import sys
from PySide6.QtWidgets import QApplication, QWidget, QHBoxLayout, QLabel
from monkeyqt import MkDropdown

class DropdownDemo(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Dropdown Demo")
        self.resize(400, 200)

        layout = QHBoxLayout(self)

        # 1. 更多操作下拉框        self.dropdown = MkDropdown("更多操作")
        self.dropdown.add_item("复制链接", "copy")
        self.dropdown.add_item("刷新页面", "refresh")
        self.dropdown.add_separator()
        self.dropdown.add_item("导出PDF", "export")
        layout.addWidget(self.dropdown)

        # 2. 状态标签        self.status_label = QLabel("暂无操作")
        self.status_label.setStyleSheet("color: #606266; font-size: 14px;")
        layout.addWidget(self.status_label)

        # 3. 关联事件
        self.dropdown.itemClicked.connect(self._on_item_clicked)

    def _on_item_clicked(self, action_id):
        actions = {
            "copy": "🔗 链接已复,
            "refresh": "🔄 页面已刷,
            "export": "📄 PDF 正在导出.."
        }
        self.status_label.setText(actions.get(action_id, "未知操作"))

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