【问题标题】:QAction not triggered for added QMenu添加的 QMenu 未触发 QAction
【发布时间】:2019-06-03 08:10:52
【问题描述】:

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

在我的主 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 方法,有什么想法我做错了什么吗?

【问题讨论】:

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


    【解决方案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)
    

    【讨论】:

    • 谢谢!像一个魅力一样工作,作为我使用 about_action.triggered.connect(lambda:self.handle_trigger()) 的备份,但我不确定为什么这个工作......我必须更深入地研究 python
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-06
    相关资源
    最近更新 更多