在工具中将所有启用的 QAction 项目设置为 False?

set all QAction items enabled to False within tool?

pyside 中是否有一种方法可以将所有 QAction 项设置为在工具中的任何位置启用 = False?

例如说我在我的代码中写了这个...

# context menu
        self.edit_menu_factions = QtGui.QMenu()
        self.renameFaction = self.edit_menu_factions.addAction('Rename')
        self.renameFaction.triggered.connect(self.menu_action)
        self.removeFaction = self.edit_menu_factions.addAction('Remove')
        self.removeFaction.triggered.connect(self.menu_action)
        self.edit_menu_factions.addSeparator()
        self.copyFactionNodes = self.edit_menu_factions.addAction('Copy Nodes')
        self.copyFactionNodes.triggered.connect(self.menu_action)
        self.pasteFactionNodes = self.edit_menu_factions.addAction('Paste Nodes')
        self.pasteFactionNodes.triggered.connect(self.menu_action)
        self.edit_menu_factions.addSeparator()
        self.removeAllNodes = self.edit_menu_factions.addAction('Remove All Nodes')
        self.removeAllNodes.triggered.connect(self.menu_action)

        # sub-menu
        self.sub_menu_factions = QtGui.QMenu()
        self.nice = self.sub_menu_factions.addAction('Nice')
        self.nice.triggered.connect(self.menu_action)


        self.sub_menu_factions.setTitle("Great")
        self.edit_menu_factions.addMenu(self.sub_menu_factions)

我想通过并禁用所有操作,但主要 QMenu。

您可以使用 actions() 方法获取附加到菜单的操作列表。您可以遍历此列表并一一禁用它们。

for action in menu.actions():
    action.setDisabled(True)

编辑:此函数将递归禁用菜单项,但它会跳过子菜单,以便用户可以悬停并查看它们:

def disableMenu(menu):
    for action in menu.actions():
        if action.menu():
            disableMenu(action.menu())
        else:
            action.setDisabled(True)

您可以在特定菜单上调用此函数或menuBar()禁用所有菜单;

disableMenu(mainWindow.menuBar())