[Tkinter-discuss] How to set a constant in lambda
ggpolo at gmail.com
Tue Jan 27 18:15:54 CET 2009
On Tue, Jan 27, 2009 at 2:51 PM, vtcodger <donaldkenney at gmail.com> wrote:
> I came across a problem that probably has a simple, clever, answer -- but it
> is eluding me. I was trying to create a set of tab buttons on a Tkinter
> page using Buttons. These are created dynamically when the user loads a
> file. I don't know in advance how many files will get opened, so I want to
> have a variable number of tabs.
You could consider using a Notebook widget.
> So we have a Frame T; and an array of tabs XT; and a function
> switch_tabs(n) that will handle the details of switching the data base,
> titles, etc. I compute the tab number:
> Whoopsie = len(XT)
> And I create a new Button:
> XT.append(Button(T,text="Viola:New Tab",command=lambda:
> It all works fine except for this one minor detail. Whoopsie can't be a
> constant because I don't know in advance what constant to use.
This makes my head hurts. Email's title was: "How to set a constant in
lambda", but you just said you don't want it.
> And if
> whoopsie is a variable, it apparently is evaluated at execution time, and
> will have the then current value of whoopsie, not the value I wanted to set
> at creation time.
Constants and variables do not exist at Python, they are all names.
Can I assume that by "constant" you mean a immutable type and by
"variable" a mutable type ?
You could have put better names for these things instead of "whoopsie,
Whoopsie" to help a bit. So, what is switch_tabs supposed to do ? And
how this 'whoopsie' thing affects it ? Does it move you to the latest
tab created ? If this is the case, you could consider a pre-defined
value like 'end' or even None maybe so switch_tabs can check for these
values and understand they mean: "move to the latest tab".
> I tried everything I could think of including
> copy.copy(whoopsie) to get a constant set so that switch_tabs could know
> which tab to switch to.
> Couldn't do it. I was starting to look at tracing back through stack frames
> when it came to me that RadioButtons unlike generic Buttons have a
> variable-value attribute pair that behaves as I desire.
What do you desire ?
> So this
> manifestation of the problem is worked around. But I expect that I'll see
> this problem again in some other guise.
-- Guilherme H. Polo Goncalves
More information about the Tkinter-discuss