Problem running a FOR loop

Steve Gronicus at SGA.Ninja
Sun Aug 30 06:07:23 EDT 2020


Yes, that first option worked.
Special thanks...
Steve
===============================

Footnote:
If 666 is considered evil, then technically, 25.8069758 is the root of all
evil.

-----Original Message-----
From: Python-list <python-list-bounces+gronicus=sga.ninja at python.org> On
Behalf Of Peter Otten
Sent: Sunday, August 30, 2020 5:29 AM
To: python-list at python.org
Subject: Re: Problem running a FOR loop

Steve wrote:

> Compiles, no syntax errors however, line 82 seems to run only once 
> when the FOR loop has completed.
> Why is that?  All fields are to contain the specifications, not just 
> the last one.

It seems that passing the StringVar to the Entry widget is not sufficient to
keep it alive.

>     for lineItem in range(len(ThisList)):

>          NewSpec = tk.StringVar()
>          SVRCodeEntered = ttk.Entry(window, width = 15, textvariable =
> NewSpec)

When the previous NewSpec is overwritten with the current one the previous
gets garbage-collected and its value is lost. 

The straight-forward fix is to introduce a list:

      new_specs = []
>     for lineItem in range(len(ThisList)):

>          NewSpec = tk.StringVar()
           new_specs.append(NewSpec)
>          SVRCodeEntered = ttk.Entry(window, width = 15, textvariable =
> NewSpec)

Another option is to store the StringVar as an attribute of the Entry:

>     for lineItem in range(len(ThisList)):

>          NewSpec = tk.StringVar()
>          SVRCodeEntered = ttk.Entry(window, width = 15, textvariable =
> NewSpec)
           SVRCodeEntered.new_spec = NewSpec


--
https://mail.python.org/mailman/listinfo/python-list



More information about the Python-list mailing list