Re: [Python-es] Manejo de eventos en wxPython

2010-04-27 Por tema Narcis Garcia - GiLUG

He probado así:
NuevoControl.Bind(wx.EVT_RADIOBUTTON, self.UnaReaccion)

Pero me devuelve:
AttributeError: 'NoneType' object has no attribute 'Bind'


En/na rafaelcan...@hotmail.com ha escrit:

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/

___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Manejo de eventos en wxPython

2010-04-27 Por tema Jose Antonio Jiménez
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/


Re: [Python-es] Manejo de eventos en wxPython

2010-04-27 Por tema Narcis Garcia - GiLUG

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, rafaelcan...@hotmail.com 
mailto: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
mailto:informat...@actiu.net
Sent: Monday, April 26, 2010 9:44 PM
To: python-es@python.org mailto: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 mailto: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 mailto: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/

___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Manejo de eventos en wxPython

2010-04-27 Por tema Jose Antonio Jiménez
El 27 de abril de 2010 09:31, Narcis Garcia - GiLUG
informat...@actiu.netescribió:

 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, rafaelcan...@hotmail.com mailto:
 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
mailto:informat...@actiu.net

Sent: Monday, April 26, 2010 9:44 PM
To: python-es@python.org mailto: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 mailto: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 mailto: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/

  ___
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/




En principio no veo nada extraño en tu codigo. ¿Tiene solo un radio button o
tienes varios?.
Creo que la acción se ejecuta al cambiar el valor del radio button y si solo
tienes uno no ocurrirá nunca ese cambio.

Echale un vistazo a http://zetcode.com/wxpython/widgets, es de los

Re: [Python-es] Manejo de eventos en wxPython

2010-04-27 Por tema Narcis Garcia - GiLUG
Solucionado. He cambiado EVT_RADIOBUTTON por EVT_RADIOBOX, y luego para 
evitar errores al MessageBox le he cambiado event por event.GetString().

Gracias.

Lo que no comprendo es porqué la función de evento se ejecuta 3 veces 
cuando el usuario pulsa 1 sola vez.



En/na Oswaldo Hernández ha escrit:

Jose Antonio Jiménez escribió:



El 27 de abril de 2010 09:31, Narcis Garcia - GiLUG 
informat...@actiu.net mailto:informat...@actiu.net escribió:


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.


Normal que no reaccione. Has creado un RadioBox y le estas diciendo que 
capture un evento tipo EVT_RADIOBUTTON.


Saludos,

___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Manejo de eventos en wxPython

2010-04-27 Por tema Oswaldo Hernández

Narcis Garcia - GiLUG escribió:
...


Lo que no comprendo es porqué la función de evento se ejecuta 3 veces 
cuando el usuario pulsa 1 sola vez.




No es recomendable crear los objetos directamente sobre wx.Frame, una de 
las consecuencias es la posible duplicidad de eventos.


Lo correcto es crear un wx.Panel que actúe de fondo del Frame y crear 
los objetos sobre el panel.


class miFrame(wx.Frame):
def __init__(self, *args, **kwds):
wx.Frame.__init__(self, *args, **kwds)
FondoFrame = wx.Panel(self, -1)
# creacion de objetos sobre el panel de fondo
objeto = wx.RadioBox(FondoFrame, -1)
...

--
Oswaldo Hernández
___
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] Manejo de eventos en wxPython

2010-04-26 Por tema Narcis Garcia - GiLUG
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/


Re: [Python-es] Manejo de eventos en wxPython

2010-04-26 Por tema rafaelcantos

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/