Python 重置多个动态创建的标签
我有一段代码,它接收一个根元素和一个字典(大小可变),并使用这个字典创建两行字典的键、值对标签 代码确实有效,但当我使用不同的字典调用函数时,它会将标签放在旧字典的顶部,这会使它看起来很糟糕,并且不会删除多余的行(例如,我在上一个字典中有10行,而在当前字典中只有5行) 我试着把它放在列表中,以便在方法开始时销毁标签,但它不起作用 我的尝试:Python 重置多个动态创建的标签,python,user-interface,tkinter,Python,User Interface,Tkinter,我有一段代码,它接收一个根元素和一个字典(大小可变),并使用这个字典创建两行字典的键、值对标签 代码确实有效,但当我使用不同的字典调用函数时,它会将标签放在旧字典的顶部,这会使它看起来很糟糕,并且不会删除多余的行(例如,我在上一个字典中有10行,而在当前字典中只有5行) 我试着把它放在列表中,以便在方法开始时销毁标签,但它不起作用 我的尝试: def dict_to_frame(self, root, dic): if self.labels_col_list is not None:
def dict_to_frame(self, root, dic):
if self.labels_col_list is not None:
for i, value in enumerate(self.labels_col_list):
if value is not None:
value.destroy()
self.labels_val_list[i].destroy()
curr_row = 3
str_var_col_list = []
str_var_val_list = []
self.labels_col_list = []
self.labels_val_list = []
for col, val in dic.iteritems():
if val is None:
val = "Empty"
s1 = StringVar()
s1.set(col+": ")
str_var_col_list.append(s1)
s2 = StringVar()
s2.set(val)
str_var_val_list.append(s2)
self.labels_col_list.append(None)
self.labels_val_list.append(None)
for i, value in enumerate(str_var_col_list):
self.labels_col_list[i] = Label(root, textvariable=value).grid(column=1, row=curr_row, padx=5, pady=5)
self.labels_val_list[i] = Label(root, textvariable=str_var_val_list[i]).grid(column=2, row=curr_row, padx=5, pady=5)
curr_row += 1
我如何解决它?还有比这种方法更好的方法来创建动态标签吗?最简单的解决方案是将标签放在一个设计为仅容纳这些标签的框架中。您可以销毁框架,它将为您销毁所有标签。此外,如果这是静态数据,则没有理由使用
StringVar
s 事实上,一个简单的解决方案非常有效:)谢谢!