Search code examples
pythontkinterglobal-variables

How to create a tkinter label for every item in a list?


I want tkinter to create a Label for every item in a list. Problem: this list can have various lengths cause it's based on user input.

I managed to create a variable for every item in the list. But how can I access each variable (assign Label and var_name.grid() ) if I don't know its name while writing the program?

keys = ["foo", "bar"]
count = 0

for key in keys:
    
    labelname = "label_w_" + str(key)
    globals()[labelname] = None

    # I can access the first variable created statically, but what about the others?
    label_w_foo = Label(window, text = key)
    label_w_foo.grid(row = count, column = 1)
    count += 1

window.update()

Solution

  • Does this answer the question?

    from tkinter import *
    window =Tk()
    keys = ["foo", "bar"]
    count = 0
    labels=[]
    def change_text():
        for j,l in enumerate(labels):
            l.config(text=str(keys[j])+str(j))
    for key in keys:
        # I can access the first variable created statically, but what about the others?
        labels.append(Label(window,text=key))
        labels[count].grid(row = count, column = 1)
        count += 1
    print(labels)
    Button(window,text="Change Text",command=change_text).grid(row=count, column=0)
    window.mainloop()