Ваша проблема в том, что вы уничтожаете и воссоздаете ярлыки, не обновляя их. Создав метку, вы можете легко обновить ее, не разрушая, используя метод конфигурации.
my_label = Label(parent, text='Hello') #<-- Create a label
my_label.config(text='Bye') #<-- update label
Итак, в вашем коде вы можете сделать что-то вроде этого:
from Tkinter import *
# Your updating function
def update_labels(labels, new_info):
for l in labels:
l.config(text=new_info)
from functools import partial #<-- use partial to pass arguments from button event
tk = Tk()
# Create my label
my_label = Label(text='Hello')
my_label.pack()
# To update my label
my_label.config(text='bye')
# So you could make a list of labels, and then update that list
labels = []
for l in range(10):
lbl = Label(text=l)
lbl.pack()
labels.append(lbl)
# A button that updates all labels, example
b = Button(text='Update', command=partial(update_labels, labels, 'hi'))
b.pack()
mainloop()
Теперь вы очевидно, хотелось бы обновить каждую метку разными данными. Для этого добавьте каждую метку в словарь с другим именем ключа
labels = {}
for l in range(10):
labels[l] = Label(text=l)
labels[l].pack()
создайте свою функцию обновления
def update_label(label, new_info):
label.config(new_info)
А затем используйте имя ключа метки для доступа к нему из словаря меток
label = labels[2]
, а затем вызовите функцию update_label
update_label(label, 'new info here')