没有为添加的QMenu(QMenuBar / PyQt5)触发QAction

时间:2017-05-01 10:51:42

标签: python python-3.x pyqt pyqt5 qmenubar

我面临的问题是当我想将菜单栏的功能分成多个文件(类)时,每个文件都特定于处理选项(文件/帮助/编辑等)。

在主UI类中,我有:

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

在MenuHelp(类)中:

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方法,对于我做错了什么想法?

1 个答案:

答案 0 :(得分:1)

您必须将父母传递给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)