QAction не запускается для добавленного QMenu (QMenuBar/PyQt5)

Проблема, с которой я сталкиваюсь, заключается в том, что я хочу разделить функциональность меню на несколько файлов (классов), каждый из которых предназначен для опций обработки (Файл / Справка / Изменить и т. Д.).

В классе Main 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 ответ

Решение

Вы должны передать родителя вашему 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)
Другие вопросы по тегам