在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。
答案 0 :(得分:1)
您可以使用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())