[Python-es] Manejo de eventos en wxPython

rafaelcantos en hotmail.com rafaelcantos en hotmail.com
Mar Abr 27 00:08:26 CEST 2010


Buenas.

yo estoy empezando ahora con wxpython, pero veo algo mal, o eso entiendo:

NuevoControl = self.LosControles.append(wx.RadioBox(self, -1, AnimalActual, 
(PosX, PosY), wx.DefaultSize, OpcionesPosibles, 1))
self.Bind(wx.EVT_RADIOBUTTON, self.UnaReaccion, NuevoControl)

Por lo que yo veo ahí, estás conectando el evento  a la ventana y no al 
control. self contiene la ventana, no el control. Lo que me despista ahí es 
el tercer parámetro que pasas, la verdad.
La forma que yo conozco (desconozco si hay otra) es con esta forma:

self.miControl.bind(ex.evento, self.miFuncion)

Intenta transformarlo en esta forma, a ver si te funciona.

saludos

Rafa



--------------------------------------------------
From: "Narcis Garcia - GiLUG" <informatica en actiu.net>
Sent: Monday, April 26, 2010 9:44 PM
To: <python-es en python.org>
Subject: [Python-es] Manejo de eventos en wxPython

> Hola, soy nuevo en la lista y ante todo quiero agradecer a quienes la
> mantienen en funcionamiento y a quienes tienen la paciencia de ayudar a
> los demás.
>
> Estoy empezando en Python desarrollando una pequeña aplicación con
> interfaz gráfica (sin asistentes/IDE/RAD), y estoy intentando manejar
> eventos para los controles en una ventana, pero la pequeña muestra que
> adjunto no reacciona a nada.
>
> ¿Puede alguien explicar qué es lo que estoy haciendo mal?
> Quiero lanzar un cuadro de diálogo con el título "Funciona" cuando el
> usuario cambia un valor, pero sólo el formulario es mostrado sin ninguna
> reacción ni error.
>
> Gracias.
>



> #!/usr/bin/python
> import wx
> AnimalesDisponibles = ["gato", "perro", "pajaro"]
>
> class InterfazPrincipal(wx.Frame):
> def __init__(self, parent, title):
> wx.Frame.__init__(self, parent, title=title)
> OpcionesPosibles = ["Sentar", "Caminar", "Correr"]
> self.sizer2 = wx.BoxSizer(wx.HORIZONTAL)
> self.LosControles = []
> NrControlActual = 0
> for AnimalActual in AnimalesDisponibles:
> PosX = 10+90*NrControlActual
> PosY = 10
> NuevoControl = self.LosControles.append(wx.RadioBox(self, -1, 
> AnimalActual, (PosX, PosY), wx.DefaultSize, OpcionesPosibles, 1))
> self.Bind(wx.EVT_RADIOBUTTON, self.UnaReaccion, NuevoControl)
> NrControlActual = NrControlActual + 1
> self.Show(True)
> def UnaReaccion(self, event):
> wx.MessageBox(event, "Funciona")
> event.Skip()
>
> Aplicacion = wx.App(False)
> MiVentana = InterfazPrincipal(None, "Una prueba de eventos")
> Aplicacion.MainLoop()
>
>



> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
> 



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