Connecting action to a menu item/action on a button?

166 Views Asked by At

I want to make my own menu bar. I have found a way to add actions to a QPushButton:

Source: 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)

However, I am not able to add functions to specific items. What I would ideally be able to do is:

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

Is that possible ?

0

There are 0 best solutions below