Создать Qmenus из словаря - PullRequest
       27

Создать Qmenus из словаря

0 голосов
/ 08 марта 2019

Я пытаюсь создать и добавить в 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
...