7 votos

Submenús de 2.14 Python de QGIS

Estoy tratando de agregar sub-elementos de menú en un menú que enlaza con un icono de barra de herramientas. Es probablemente la mejor manera de mostrar lo que el resultado que estoy obteniendo en la actualidad, a continuación, hacer referencia al código:

enter image description here

El código de un plugin de clase:

clase SandBox2:

def __init__(self, iface):
    self.iface = iface
    self.plugin_dir = os.path.dirname(os.path.realpath(__file__))
    self.actions = []

def initGui(self):
    self.toolbar = self.iface.addToolBar("Sandbox2")
    self.toolbar.setObjectName("Sandbox2")

    self.SetupSubMenu = QAction((QIcon("C:/Users/Rudy/.qgis2/python/plugins/arcLensStandard/icons/new.png")), "Sub-Item 1-1",self.iface.mainWindow())
    self.submenu_11 = QMenu(self.iface.mainWindow()) 
    self.submenu_11.addAction(self.SetupSubMenu)
    self.SetupSubMenu.triggered.connect(self.runMsg1)

    self.SetupMainMenuItem = QAction((QIcon("C:/Users/Rudy/.qgis2/python/plugins/arcLensStandard/icons/item_one.png")), "First Menu Item", self.iface.mainWindow())
    self.Menu1 = QMenu(self.iface.mainWindow())
    self.Menu1.addAction(self.SetupMainMenuItem)
    self.Menu1.addMenu(self.submenu_11)

    self.toolButton = QToolButton()
    self.toolButton.setIcon(QIcon("C:/Users/Rudy/.qgis2/python/plugins/arcLensStandard/icons/adddata.png"))
    self.toolButton.setMenu(self.Menu1)
    self.toolButton.setPopupMode(QToolButton.InstantPopup)
    self.toolbar.addWidget(self.toolButton)

def runMsg1(self):
    QMessageBox.information(self.iface.mainWindow(), "Message", 
        "Sub-Item 1-1 Message", QMessageBox.Ok)

Lo que quiero ver es la de la derecha-de frente símbolo de intercalación en la misma línea que el "Primer" Elemento de Menú de la cadena, en lugar de aparecer en una línea en blanco después de la cadena. La declaración de que la adición de la sub-menú es:

self.Menu1.addMenu(self.submenu_11)

y ahí es donde la línea en blanco se inserta (aparentemente).

6voto

Mue Puntos 2469

Puede asignar un nombre a la Menu1 (e.g. first_menu ) y luego llamar a esto al agregar la acción de su submenú:

def initGui(self):
    self.toolbar = self.iface.addToolBar("Sandbox2")
    self.toolbar.setObjectName("Sandbox2")

    self.toolbar = self.iface.addToolBar("Sandbox2")
    self.toolbar.setObjectName("Sandbox2")

    self.SetupSubMenu = QAction((QIcon("C:/Users/Rudy/.qgis2/python/plugins/arcLensStandard/icons/new.png")), "Sub-Item 1-1",self.iface.mainWindow())
    self.SetupSubMenu.triggered.connect(self.runMsg1)

    self.Menu1 = QMenu(self.iface.mainWindow())
    # Here we assign the name for the first menu
    first_menu = self.Menu1.addMenu(QIcon("C:/Users/Rudy/.qgis2/python/plugins/arcLensStandard/icons/item_one.png"), "First Menu Item")
    # Call first_menu to add the action for the submenu
    first_menu.addAction(self.SetupSubMenu)

    self.toolButton = QToolButton()
    self.toolButton.setIcon(QIcon("C:/Users/Rudy/.qgis2/python/plugins/arcLensStandard/icons/adddata.png"))
    self.toolButton.setMenu(self.Menu1)
    self.toolButton.setPopupMode(QToolButton.InstantPopup)
    self.toolbar.addWidget(self.toolButton)

Result

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X