Differences in tkinter Window between normal and debugging mode

Viewed 55

Code:

fields = ['Label1','Label2','Label3','Label4','Label5','Label6']
selected_item = ['Entry1','Entry2','Entry3','Entry4','Entry5','Label6']
stringvar_list = [tk.StringVar() for s in range(len(selected_item))]
for var in range(len(stringvar_list)):
    stringvar_list[var].set(selected_item[var])
for i in range(len(fields)):
    lbl = ttk.Label(root,text=fields[i])
    ent = ttk.Entry(root,textvariable=stringvar_list[i])
    lbl.grid(row=row,column=col,padx=2,pady=2)
    ent.grid(row=row,column=col+1,padx=2,pady=2)
    row+=1

When I run this code, I get this(the entries are not filled):

no entries

But when I run the same code in debugging mode,no changes - I just skip through the breakpoint, I get this(Entries are filled):

entries filled

I'm using VS Code, if it matters.

Extended Code:

def modify(fields):
    # fields = fields[1:]       #Original
    fields = ['Label1','Label2','Label3','Label4','Label5','Label6']    # For Simplicity and Underestanding
    # selected_item = tree.item(tree.selection()[0])['values'][1:]  #Original
    selected_item = ['Entry1','Entry2','Entry3','Entry4','Entry5','Label6'] # For Simplicity and Underestanding
    modify_top = tk.Toplevel(root)
    stringvar_list = [tk.StringVar() for s in range(len(selected_item))]
    for var in range(len(stringvar_list)):
        stringvar_list[var].set(selected_item[var])
    row = 0
    col = 0
    frm = ttk.Frame(modify_top)
    for i in range(len(fields)):
        lbl = ttk.Label(frm,text=fields[i])
        ent = ttk.Entry(frm,textvariable=stringvar_list[i])
        lbl.grid(row=row,column=col,padx=2,pady=2)
        ent.grid(row=row,column=col+1,padx=2,pady=2)
        row+=1
    frm.grid(sticky='nsew',row=0,column=0,padx=30,pady=20)
    make_changes_btn = ttk.Button(modify_top,text='Make Changes',command = lambda : make_changes())
    make_changes_btn.grid(row=1,column=0)

Issues:

  1. As @acw1668 commented, making stringvar_list global did the job, but I'm referencing it's values in the same function, so that shouldn't be a problem.
  2. Even if the issue is with the scope, then why does the program work fine in debugging mode?
0 Answers
Related