我有一个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
中添加新的子菜单这个想法是,在我的工具中,我想让主菜单项一次性切换其子菜单项的检查状态。 而不是创建另一个或两个其他选项来切换子项目的状态。