Я пытаюсь создать и добавить в qmenus, считывая из заданных вложенных словарей.
До сих пор мне удавалось только получить меню первого уровня для чтения и добавить новые меню первого уровня.
В настоящее время у меня возникают проблемы с добавлением второго уровня, поскольку я не могу получить доступ к данному меню первого уровня.
Может ли кто-нибудь предоставить мне некоторые идеи?
class Example(QtGui.QMainWindow):
def __init__(self, parent=None):
super(Example, self).__init__(parent)
self.main_menus = defaultdict(list)
self.menu_listing = {'mains': ['easter', 'western'], 'drinks': ['water', 'beer', 'soda']}
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()
if self.menu_listing:
for m in self.menu_listing:
self.add_first_tier(m)
def contextMenuEvent(self, event):
action = self.qmenu.exec_(self.mapToGlobal(event.pos()))
def add_new_item(self):
new_item_name, ok = QtGui.QInputDialog.getText(self, "name of item", "Name of new item : ")
if ok:
new_action = QtGui.QAction(new_item_name, self.qmenu)
self.qmenu.addAction(new_action)
self.main_menus[new_action] = None
print self.main_menus
def add_first_tier(self, item):
new_action = QtGui.QAction(item, self.qmenu)
self.qmenu.addAction(new_action)
print self.qmenu
def add_second_tier(self, item):
pass