Arguments for button command via Tkinter?

Steve Holden steve at holdenweb.com
Mon Oct 31 14:23:18 EST 2005


Francesco Bochicchio wrote:
> Il Mon, 31 Oct 2005 06:23:12 -0800, dakman at gmail.com 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 ...

regards
  Steve
-- 
Steve Holden       +44 150 684 7255  +1 800 494 3119
Holden Web LLC                     www.holdenweb.com
PyCon TX 2006                  www.python.org/pycon/




More information about the Python-list mailing list