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

Héctor J. Benítez Corredera facturasxebolax en gmail.com
Sab Mayo 9 05:39:00 EDT 2020


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

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20200509/c1f0f43c/attachment.html>


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