I'm trying to recreate the windows note pad.
I'm currently messing with the QMenuBar
I made a dictionary with all the menus and actions it will have in the following pattern:
menus = {'File':[['New', 'Ctrl+n'],
                 ['Open', 'Ctrl+o'],
                 ['Save', 'Ctrl+s'],
                 ['Save as...', None],
                 'Separator', 
                 # and so on
Then I iterate over that dict, and created the menus and actions successfully and stored them in a second dictionary.
Now I'm trying to connect each action[new, open, save, …] to a instance method of the same name.
I'm doing like so:
for action in menus[m]:
    action = menu.addAction(action[0])
    if action[1]:
        action.setShortcut(QKeySequence(action[1]))
    if isinstance(action, QAction):
        fname = action[0].lower() 
        # and some other string manipulations
        func = getattr(self,fname)
        action.triggered.connect(lambda arg=action: func(arg))
It connects successfully, but if I try to use any of the actions it does nothing.
I had previously connected actions using lambda functions, but this is the first time I'm using getattr() and lambda together.
 
    