O ContextMenu e os subníveis

0

Pergunta

Eu sou capaz de criar um ContextMenu com um nível e um primeiro subnível. Eu estava a tentar adicionar mais subníveis, mas eu não posso. Eu procurei na Internet por um longo tempo para encontrar alguns exemplos, mas nada. No meu exemplo, como eu deveria modificar o código para adicionar o "Brenda" opção no segundo subnível? Por favor, olha a foto. Obrigado.

ContextMenu Image

def contextMenuEvent(self,event):

    menu = QMenu(self)

    Option1 = menu.addAction("Paul")

    Option2 = QMenu("Richard")
    Option2_1 = Option2.addAction("Frida")
    Option2_2 = Option2.addAction("Susan")
    menu.addMenu(Option2)

    Option3 = menu.addAction("Thomas")

    action = menu.exec_(self.mapToGlobal(event.pos()))
    if action == Option1:
        print("Paul")
    elif action == Option2_1:
        print("Frida")
    elif action == Option2_2:
        print("Susan")
    elif action == Option3:
        print("Thomas")
contextmenu levels pyqt5 python
2021-11-22 15:28:32
1

Melhor resposta

1

Não deveria este ser, como alcançar um terceiro menu camada?

def contextMenuEvent(self,event):

    menu = QMenu(self)

    Option1 = menu.addAction("Paul")

    Option2 = QMenu("Richard")
    Option2_1 = Option2.addAction("Frida")
    Option2_2 = QMenu("Susan") # define a new menu, not an action
    Option2_2_1 = Option2_2.addAction("Brenda") # add sub menu item
    Option2.addMenu(Option2_2) # add menu to Option2 menu
    menu.addMenu(Option2)

    Option3 = menu.addAction("Thomas")

    action = menu.exec_(self.mapToGlobal(event.pos()))
    if action == Option1:
        print("Paul")
    elif action == Option2_1:
        print("Frida")
    elif action == Option2_2:
        print("Susan")
    elif action == Option3:
        print("Thomas")
2021-11-22 15:47:11

Em outros idiomas

Esta página está em outros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................