Python - Evento pasando un parametro

 
Vista:

Evento pasando un parametro

Publicado por Chino (2 intervenciones) el 31/01/2008 13:31:01
Hola

Soy un poco novato en esto de python y yo en wxpython ni te cuento.

Me gustaria poder pasarle un parametro a un evento o por lo menos saber desde que boton se le ha llamado, la cuestion es q voy a llamar a una funcion desde varios botones, entonces tengo q saber q boton se a pulsado para cargar los datos en un sitio o en otro, se q podria hacerlo en varias funciones pero creo q es mas optimo y limpio asi.

Espero q alguien me conteste, muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Evento pasando un parametro

Publicado por Cyrus (54 intervenciones) el 01/02/2008 15:51:14
A ver que te parece esta solución:

Desde el evento del boton1 haces:
funcion("boton1")

Desde el evento del boto2 haces:
funcion("boton2")

Y luego la funcion seria algo asi:
def funcion(botonActual):
___if(botonActual=="boton1"):
______.......
___else:
______.......

Te sirve esto??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Evento pasando un parametro

Publicado por Chino (2 intervenciones) el 01/02/2008 16:19:17
Bueno esa solucion seria perfecta pero creo q no es tan facil, me explico:
Yo tengo dos botones:
bNuevo
bEditar

Para desencadenar el evento lo declaro asi:
self.Bind(wx.EVT_BUTTON, self.funcion, self.bNuevo)
self.Bind(wx.EVT_BUTTON, self.funcion, self.bEditar)

Y la funcion la declaro asi:
def funcion(self, event):

He probado intentado pasarle el parametro de 2 formas y no me funciona ninguna:
1.
self.Bind(wx.EVT_BUTTON, self.funcion, self.bNuevo, "nuevo")
def funcion(self, event, parametro):

Me da este error:
TypeError: funcion() takes exactly 3 arguments (2 given)
2.
self.Bind(wx.EVT_BUTTON, self.funcion("nuevo"), self.bNuevo)
def funcion(self, event, parametro):

Y en esta el error directamente ni me arranca la aplicacion como si estuviera mal definida la declaracion del evento.

Veis algun error o se os ocurre una forma mejor de hacerlo???

Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Evento pasando un parametro

Publicado por Cyrus (54 intervenciones) el 02/02/2008 15:41:56
Cierto lo que pones, no se como se haría esto en python, pero se me ocurren 2 soluciones:
una es que dentro de función averigües que botón has pulsado, esto lo puedes hacer mediante el parámetro self o event, tendrás que indagar, porque no estoy seguro.

Y la segunda opción que se me ocurre, es que uses dos funciones distintas, pero que llamen a la misma, me explico, algo como esto:

self.Bind(wx.EVT_BUTTON, self.funcionNuevo, self.bNuevo)
self.Bind(wx.EVT_BUTTON, self.funcionEditar, self.bEditar)

def funcionEditar(self, event):
____funcion("Editar")

def funcionNuevo(self, event):
____funcion("Nuevo")

def funcion(BotonActual):
....

Ya me comentaras que te parece. La segunda opción me parece más elegante.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar