[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