我创建了一个与a绑定的函数,但是当我按下按钮时,程序中的所有条目都将被清除。当我运行该功能时,只有最后一个被清除。
P.S。所有条目都是使用for
生成的,就像我尝试清除它们一样。
def refresh():
for i in range (1,a+1):
entrylength_i.delete(0, "end")
entrywidth_i.delete(0, "end")
entryheight_i.delete(0, "end")
for j in range (1,b+1):
entrylength_j.delete(0, "end")
entrywidth_j.delete(0, "end")
entryheight_j.delete(0, "end")
答案 0 :(得分:1)
由于您提到您创建条目的方式与尝试清除它们的方式相同,所以我假设您执行以下操作:
a= 5
e = []
for i in range (1,a+1):
entrylength_i = tk.Entry(root)
entrylength_i.grid(row=i,column=0)
e.append(entrylength_i)
print (e)
结果:
[<tkinter.Entry object .!entry>, <tkinter.Entry object .!entry2>, ...]
在for
循环中,您反复使用变量名entrylength_i
(而不是entrylength_1
,entrylength_2
...)。之所以有效,是因为您在每次迭代中都创建了一个新对象。
但是当您尝试使用相同的方法删除它们时:
for i in range (1,a+1):
entrylength_i.delete(0, "end")
变量entrylength_i
仅指向最后定义的对象,这就是为什么仅清除最后一个对象的原因。
因此清除所有条目的正确方法是遍历列表e
中的对象:
for entry in e:
entry.delete(0, "end")