[Python-es] Manejo de eventos en wxPython

Narcis Garcia - GiLUG informatica en actiu.net
Mar Abr 27 09:31:32 CEST 2010


Ahora lo he puesto así:
NuevoControl = wx.RadioBox(self, -1, AnimalActual, ...)
self.LosControles.append(NuevoControl)
NuevoControl.Bind(wx.EVT_RADIOBUTTON, self.UnaReaccion)

No me da ningun error, pero tampoco reacciona.
Lo que espero es que al pulsar y/o cambiar valores de las casillas me 
ejecute la función "UnaReaccion".


En/na Jose Antonio Jiménez ha escrit:
> 
> 
> El 27 de abril de 2010 00:08, <rafaelcantos en hotmail.com 
> <mailto:rafaelcantos en hotmail.com>> escribió:
> 
>     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
>     <mailto:informatica en actiu.net>>
>     Sent: Monday, April 26, 2010 9:44 PM
>     To: <python-es en python.org <mailto: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 <mailto:Python-es en python.org>
>         http://mail.python.org/mailman/listinfo/python-es
>         FAQ: http://python-es-faq.wikidot.com/
> 
>     _______________________________________________
>     Python-es mailing list
>     Python-es en python.org <mailto:Python-es en python.org>
>     http://mail.python.org/mailman/listinfo/python-es
>     FAQ: http://python-es-faq.wikidot.com/
> 
> 
>  
> NuevoControl = self.LosControles.append(wx.RadioBox( ...
>  
> NuevoControl tiene el resultado de la función append, que es None, por 
> eso te da ese mensaje de error.
>  
> Prueba a:
> NuevoControl = wx.RadioBox(...
> self.LosControloes.append(NuevoControl)
>  
> Y luego, para el evento, la forma en que lo haces está bien. También es 
> correcta la forma que te dice Narcis (NuevoControl.Bind(...) )
> 
> -- 
> Un saludo. Jose
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> 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