[Python-es] Ayuda con un menú dinámico en wxpython

PeRy perysoy en gmail.com
Sab Mayo 9 10:01:50 EDT 2020


Hola!

puedes acceder al Label de MenuItem de la siguiente manera:

def prueba1(self, event):
    print('prueba1 event')
    id_selected = event.GetId()   # capturamos el id del MenuItem
    print("Pulsado submenú de Paises")
    menu = event.GetEventObject()   # Capturamos el Menu
    menuItem = menu.FindItemById(id_selected)
    print(menuItem.GetLabel())

Luego aquí puedes jugar para conseguir el numero que vaya relacionado!

espero que te ayude!

un saludo


El sáb., 9 may. 2020 a las 11:39, Héctor J. Benítez Corredera (<
facturasxebolax en gmail.com>) escribió:

> Buenos días.
>
>
>
> Quisiera consultarles un problema que estoy teniendo con un menú dinámico
> en wxpython.
>
>
>
> Estoy usando wxpython 4.0.3 y Python 3.7.
>
>
>
> Bien mi problema es que me gustaría obtener cuando elijo un item del menú
> que rango es por ejemplo:
>
>
>
> [“España”, “Italia”, “Portugal”]
>
>
>
> Bien si elijo España me gustaría que me devolviese 0 y así sucesivamente.
>
>
>
> Es un popup dinámico ya que la información varia al ser obtenida de
> internet.
>
>
>
> Pongo un ejemplo de lo que tengo echo:
>
>
>
>
>
>               def menu_accion(self):
>
>                             lista1a = ["España", "Italia", "Portugal"]
>
>                             lista1b = ["100", "200", "300"]
>
>                             lista2a = ["Gato", "Perro", "Caballo"]
>
>                             lista2b = ["100", "200", "300"]
>
>                             self.Menu_Principal = wx.Menu()
>
>                             self.Sub_1 = wx.Menu()
>
>                             for i in range(0, len(lista1b)):
>
>                                           item =  "item_" + str(i)
>
>                                           Menu_ID = i
>
>                                           nombre_item = lista1a[i]
>
>                                           numero_item = lista1b[i]
>
>                                           disparador = self.prueba1
>
>
>
>                                           Menu_ID =
> self.Sub_1.Append(wx.ID_ANY, "{} {}".format(nombre_item, numero_item))
>
>                                           self.Bind(wx.EVT_MENU,
> disparador, id=Menu_ID.GetId())
>
>
>
>                             self.Menu_Principal.AppendSubMenu(self.Sub_1,
> "Paises")
>
>                             self.Sub_2 = wx.Menu()
>
>                             for z in range(0, len(lista2b)):
>
>                                           Menu_IDz = z
>
>                                           nombre_itemz = lista2a[z]
>
>                                           numero_itemz = lista2b[z]
>
>                                           disparadorz = self.prueba2
>
>
>
>                                           Menu_IDz =
> self.Sub_2.Append(wx.ID_ANY, "{} {}".format(nombre_itemz, numero_itemz))
>
>                                           self.Bind(wx.EVT_MENU,
> disparadorz, id=Menu_IDz.GetId())
>
>
>
>                             self.Menu_Principal.AppendSubMenu(self.Sub_2,
> "Animales")
>
>
>
>
>
>               def mostrar_menu_accion(self,event):
>
>                             position = self.Panel.GetPosition()
>
>                             self.PopupMenu(self.Menu_Principal,position)
>
>                             pass
>
>
>
>               def prueba1(self, event):
>
>                             id_selected = event.GetId()
>
>                             print(id_selected)
>
>                             print("Pulsado submenú de Paises")
>
>               def prueba2(self, event):
>
>                             id_selected = event.GetId()
>
>                             print(id_selected)
>
>                             print("Pulsado submenú de Animales")
>
>
>
>
>
> Bien cuando elijo España por ejemplo me devuelve esto:
>
>
>
> -31998
>
> Pulsado submenú de Países
>
>
>
>
>
> Bien haciendo pruebas y por ejemplo cambiando wx.ID_ANY por Menu_ID me da
> correctamente que al elegir España es 0 pero se va al def prueba2
> indiferentemente si elegí en el menú países o animales.
>
>
>
> La verdad e estado buscando mucho y ya no se si de tanto me e liado y no
> se por donde continuar.
>
>
>
> Se agradece cualquier ayuda.
>
>
>
> Cordiales saludos
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20200509/5a8215ba/attachment.html>


Más información sobre la lista de distribución Python-es