添加的 QMenu 未触发 QAction

QAction not triggered for added QMenu

我面临的问题是当我想将菜单栏的功能拆分为多个文件(classes)时,每个文件都特定于处理选项(File/Help/Edit 等等上)。

主要UIclass我有:

class MyFrame(QMainWindow):

    def __init__(self):
        super().__init__()
        self.menu_bar = self.menuBar()
        # Create menu
        self.add_menu()

    def add_menu(self):
        help_menu = MenuHelp(self)


    def getMenuBar(self):
        return self.menu_bar

在菜单帮助中 (class):

class MenuHelp(QMenu):

    def __init__(self, parrent_widget):
        super(MenuHelp, self).__init__()
        self.menu_variable = parrent_widget.getMenuBar().addMenu('Help')
        about_action = self.menu_variable.addAction('About')
        about_action.setStatusTip('About')
        about_action.triggered.connect(self.handle_trigger)

    def handle_trigger(self):
        print('Im here')

菜单栏显示正确,但从未调用 handle_trigger 方法,请问我做错了什么?

您必须将父级传递给您的 QMenu。您必须更改:

class MenuHelp(QMenu):
    def __init__(self, parrent_widget):
        super(MenuHelp, self).__init__()

至:

class MenuHelp(QMenu):
    def __init__(self, parrent_widget):
        super(MenuHelp, self).__init__(parrent_widget)