Tkinter: Argumentos en un manejador de evento
Joaquin Jose del Cerro Murciano
jjdelcerromurciano en yahoo.es
Mie Oct 26 15:57:13 CEST 2005
...
>
>
> Sabiendo esto, la solución del problema sería algo así:
>
> class MyArchivo:
> def __init__(self, archivo):
> self.archivo=archivo
> def guardaGIF(self):
> archivo=self.archivo
> ...
>
> ar=MyArchivo("fichero.gif")
> boton = Button(root, text='Guardar como GIF', command=ar.guardaGIF)
>
> Ésta es la idea general, aunque quedaría más robusto encapsular en
> subclases los widgets junto con los comandos que aceptan. Pero esto
> sería mejor hablarlo para otra ocasión.
>
Siguiendo este mismo hilo yo suelo gastar una clase a modo de "wraper para
todo" (en lo que a tkinter se refiere) algo como esta:
class Command(object):
def __init__(self, funcion, *args,**options):
self._funcion = funcion
self._args = args
self._options = options
def __call__(self, *args, **options):
# Me como los parametros que le lleguen y los ignoro.
self._funcion(*self._args, **self._options)
La clase recibe la funcion que ha de invocar y sus parametros,
se guarda todo ello y cuando se invoca a la instancia del objeto
se llama a la funcion con los parametros que se indicaron.
Y para usarla, simplemente....
boton = Button(
root,
text="Guardar como GIF",
command=Command(guardaGIF,"fichero.gif")
)
Un saludo
Joaquin
______________________________________________
Renovamos el Correo Yahoo!
Nuevos servicios, más seguridad
http://correo.yahoo.es
Más información sobre la lista de distribución Python-es