[Python-es] Manejo de eventos en wxPython

Jose Antonio Jiménez josejcamara en gmail.com
Mar Abr 27 09:24:25 CEST 2010


El 27 de abril de 2010 00:08, <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>
> 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/
>>
>> _______________________________________________
> Python-es mailing list
> 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
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20100427/b2b8abd3/attachment.html>


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