llamar una funcion con parametro (completa)

Jose Manuel Vivo jmvivo en cenoclap.es
Vie Ene 31 09:39:06 CET 2003


El Mié 29 Ene 2003 19:58, Marcelo Abeldaño escribió:
> siguiendo con las consultas de novato:
>
> -------------------8<---------------------
> def botonera(self,nro):
>  ...
>  botones.add('Nuevo',command =
> self.nuevo_renglon(nro))
>  ...
>
> def nuevo_renglon(self,nro):
>  agrego_cosas.....
>  ...
> -------------------8<---------------------
>
> lo que pasa es lo siguiente, cuando llamo a
> command = self.nuevo_renglon
> sin parametros, funciona todo ok. El problema es que
> le tengo que pasar un parametro
> command = self.nuevo_renglon(nro)
> entonces me ejecuta la funcion al inicializar...
>
> desde ya gracias a todos por la ayuda
> Marcelo
>
>
> =====
> Perdimos trabajo, petroleo, industria, el campo, empresas, la salud, la
> justicia, educación y lo peor...... unos pocos nos robaron el futuro.....
> Ahora decime: POR QUE CARAJO MENEM SE MERECE TU VOTO?
> No dejes que le robe el futuro también nuestros hijos........
>
> Ahora podés usar Yahoo! Messenger desde tu celular. Aprendé cómo hacerlo en
> Yahoo! Móvil: http://ar.mobile.yahoo.com/sms.html
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo.py/python-es


Tu problema es que al parsarle la funcion de de esa manera "command = 
self.nuevo_renglon(nro)" no estas pasando una referencia a la funcion, sino 
le estas pidiendo el resultado de esta y, por lo tanto, solo la ejecuta al 
crear el cotrol para asignar el resultado al parametro "command". Para 
pasarle la referencia deberias usar "command = self.nuevo_renglon", asi le 
pasas la referencia a un objeto funcion sin invocarlo.

Para solucionarlo deberias guardar el valor en algun sitio dentro del control 
principal al que pudieres acceder desde "nuevo_renglon".




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