You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改PyQt ContextMenu代码以在二级子菜单中添加Brenda选项

Qt ContextMenu多级子菜单添加方案

Qt的多级菜单嵌套逻辑非常直接:如果要给某个菜单新增下一级子菜单,只需创建新的QMenu实例,调用父级菜单的addMenu()方法将子菜单挂载到父级上,再给子菜单添加对应动作即可。

你需要的在二级子菜单中添加Brenda选项的修改后完整代码如下:

def contextMenuEvent(self,event):
    menu = QMenu(self)

    Option1 = menu.addAction("Paul")

    Option2 = QMenu("Richard")
    Option2_1 = Option2.addAction("Frida")
    Option2_2 = Option2.addAction("Susan")
    # 新增二级子菜单,也可根据需求挂载到其他菜单项下调整层级
    Option2_3 = QMenu("更多人员")
    Option2_3_1 = Option2_3.addAction("Brenda")
    Option2.addMenu(Option2_3)
    menu.addMenu(Option2)

    Option3 = menu.addAction("Thomas")

    action = menu.exec_(self.mapToGlobal(event.pos()))
    if action == Option1:
        print("Paul")
    elif action == Option2_1:
        print("Frida")
    elif action == Option2_2:
        print("Susan")
    # 新增Brenda选项触发逻辑
    elif action == Option2_3_1:
        print("Brenda")
    elif action == Option3:
        print("Thomas")

如果你需要将Brenda放在Susan的下一级子菜单中,调整Option2_2的定义即可:

# 将原有的Option2_2 = Option2.addAction("Susan")替换为以下内容
Option2_2 = QMenu("Susan")
Option2_2_1 = Option2_2.addAction("Brenda")

对应触发判断分支修改为:

elif action == Option2_2_1:
    print("Brenda")

内容的提问来源于stack exchange,提问作者Nepura

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 01:36:01