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)