У меня есть QMenu, работающее следующим образом:
class Example(QtGui.QMainWindow):
def __init__(self, parent=None):
super(Example, self).__init__(parent)
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('Context menu')
self.qmenu = QtGui.QMenu()
add_item_action = QtGui.QAction('Add new item', self,
triggered=self.add_new_item)
self.qmenu.addAction(add_item_action)
self.qmenu.addSeparator()
def contextMenuEvent(self, event):
action = self.qmenu.exec_(self.mapToGlobal(event.pos()))
def add_new_item(self):
new_menu_name, ok = QtGui.QInputDialog.getText(
self,
"name of menu",
"Name of new menu : "
)
if ok:
base_qmenu = QtGui.QMenu(new_menu_name, self)
add_item_action = QtGui.QAction('Add Sub Item', base_qmenu)
slot = partial(self._addSubMenuItem, base_qmenu)
add_item_action.triggered.connect(slot)
base_qmenu.addAction(add_item_action)
base_qmenu.addSeparator()
self.qmenu.insertMenu(base_qmenu)
def _addSubMenuItem(self, menu):
new_submenu_name, ok = QtGui.QInputDialog.getText(
self,
'Sub Menu',
'Name of new Sub-Menu Item:'
)
if ok:
action = QtGui.QAction(new_submenu_name, self)
action.setCheckable(True)
action.setChecked(True)
menu.addAction(action)
Хотя я могу заставить работать пункты основного и подменю, я бы хотел также сделать пункт главного меню проверяемым.
Например:
- Добавить новое меню:
mainItemA
(необходимо проверить) - Добавить новое подменю в
mainItemA
Идея состояла в том, что в моем инструменте я бы хотел, чтобы пункт главного меню переключал контрольные состояния своих пунктов подменю, все сразу.Вместо создания еще одного или двух дополнительных параметров, которые переключают состояния подэлементов.