Tkinter question

Eric Brunel eric_brunel at despammed.com
Tue Oct 24 03:20:20 EDT 2006


On Tue, 24 Oct 2006 07:48:51 +0200, Hendrik van Rooyen  
<mail at microcorp.co.za> wrote:
>  Sorin Schwimmer  wrote:
> Hi All,
>
> Is it possible to have a widget id while it is created?
> Something like this:
>
> Button(root, text='...', command= lambda v=<widget id>: fn(v)).grid()
>
> and then the function:
>
> def fn(v):
>   v['bg']='BLUE' # or maybe nametowidget(v)['bg']='BLUE'

This cannot be done this way: when you create your lambda passed to the  
'command' option, the widget itself is not yet created. So there's no way  
at all to get the 'id' it will have when created.

Alternatively, you can simply split the widget creation in several lines:

b = Button(root, text='...')
b.grid()
b.configure(command=lambda b=b: fn(b))


But Hendrik's solution is better, since it avoids the use of lambda, which  
is often difficult to understand.

HTH
-- 
python -c "print ''.join([chr(154 - ord(c)) for c in  
'U(17zX(%,5.zmz5(17l8(%,5.Z*(93-965$l7+-'])"



More information about the Python-list mailing list