El 27 de abril de 2010 00:08, <rafaelcan...@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" <informat...@actiu.net> > Sent: Monday, April 26, 2010 9:44 PM > To: <python-es@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@python.org >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> _______________________________________________ > Python-es mailing list > Python-es@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@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/