Steve Holden wrote: > Francesco Bochicchio wrote: > >> Il Mon, 31 Oct 2005 06:23:12 -0800, [EMAIL PROTECTED] ha scritto: >> >> >>> And yet the stupidity continues, right after I post this I finnally >>> find an answer in a google search, It appears the way I seen it is to >>> create a class for each button and have it call the method within that. >>> If anyone else has any other ideas please tell. >> >> >> >> This is how I do it: Supposing I have three buttons b1, b2 and b3, and I >> want for each button to call the same callback with, as argument, the >> button itself: >> >> >> def common_callback(button): >> # callback code here >> >> >> class CallIt(objetc): >> def __init__(function, *args ): >> self.function, self.args = function, args >> def __call__(self, *ignore): >> self.function(button, *self.args) >> >> b1['command']= CallIt(common_callback, b1) >> b2['command']= CallIt(common_callback, b2) >> b3['command']= CallIt(common_callback, b3) >> >> This way you need only one class (a sort of custom callable) and >> its instances gets called by Tkinter and in turn calls your >> callback with the proper arguments. >> > I don't see why this is preferable to having the callback as a bound > method of the button instances. What's the advantage here? It looks > opaque and clunky to me ...
I'm not sure on the advantage either. I just recently started handling my buttons with button id's. def __init__(self, *args, **kwds): ... b1 = Tk.Button( frame, text=button, command=self.command(button) ) ... The button label is used as the id above, but a number or code could also be used. def command(self, id): """ Assign a command to an item. The id is the value to be returned. """ def do_command(): self.exit(event=id) return do_command In this case it's a dialog button so it calls the exit method which sets self.return to the button id before exiting. Cheers, Ron -- http://mail.python.org/mailman/listinfo/python-list