首页 > 解决方案 > 将操作连接到按钮上的菜单项/操作?

问题描述

我想制作自己的菜单栏。我找到了一种向 QPushButton 添加操作的方法:

来源:https ://www.youtube.com/watch?v=Aj-Q8pu_HG0

def add_menu(data,menu_obj):
    if isinstance(data,dict):
        for k,v in data.items():
            sub_menu = QtWidgets.QMenu(k,menu_obj)
            menu_obj.addMenu(sub_menu)
            add_menu(v,sub_menu)
    elif isinstance(data,list):
        for element in data:
            add_menu(element,menu_obj)       
    else:
        print(data)
        action = menu_obj.addAction(data)
        #action.setIconVisibleInMenu(False) 
        if action == "load":
            action.triggered.connect(lambda : print("load"))
        elif action == "new":
            action.triggered.connect(lambda : print("new"))
        elif action == "save":
            action.triggered.connect(lambda : print("save"))

file_menu = [
    "new","load","save"
]


menu = QtWidgets.QMenu()
menu.setStyleSheet(menu_style)
self.pushButton_file.setMenu(menu)
add_menu(file_menu,menu)

但是,我无法为特定项目添加功能。理想情况下,我能做的是:

self.menuitem_new.triggered.connect(lambda:print("NEW")).

那可能吗 ?

标签: pythonpyqt5qmenuqaction

解决方案


推荐阅读