Button (command=funtion) in Tkinter: pasing arguments

Phlip phlip_cpp at yahoo.com
Fri Aug 30 00:12:40 EDT 2002


revyakin wrote:

> If I write :
> 
> ...command = displayCoords(canvas.gettags(currentButton))

With Python22 or higher you can exploit closures:

        def displayCoords(event):
                coords = genericButton.coords()
                print coords

        genericButton.config(command = displayCoords)   

The rest of your code (snipped) contains baggage such as a canvas that you 
may need, but not for this example.

Observe that because 'displayCoords' exists in the same scope as 
'genericButton', it essentially gets passed in as a "magic local variable". 
For some reason the computing industry calls this a "closure".

If you use Python < 2.2 complain, and we'l show the slightly more odious 
ways to do this.

-- 
  Phlip
            http://www.greencheese.org/MakeItSo
  --  Have a :-) day  --




More information about the Python-list mailing list