Francesco Bochicchio wrote: > It should be added here that in Python you have several ways get around > this Tkinter limitation and pass an user argument to the callback. Once > upon a time , back in Python 1.x, I used to do something like this: > > class CallIt: > def __init__(self, f, *args): > self.f = f > self.args = args > def __call__(self): > return apply(self.f, self.args) > > and then, to do what the OP wanted to do: > command = CallIt(self.Display, 1) > > but nowadays, you can achieve the same effect with: > command = functtools.partial(self.Display,1)
or, much clearer for non-guru programmers, and a lot easier to extend when you realize that you have to do more than just calling a single method, use a local callback function: def do_display(): self.Display(1) w = Button(callback=do_display) local functions are cheap in Python; creating a new one for each button is very inexpensive. for very simple callbacks, you can use the lambda syntax as well: w = Button(callback=lambda: self.Display(1)) </F> -- http://mail.python.org/mailman/listinfo/python-list