尝试清除条目,但我只清除最后一个

时间:2019-05-10 09:14:36

标签: python python-3.x tkinter

我创建了一个与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")

1 个答案:

答案 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_1entrylength_2 ...)。之所以有效,是因为您在每次迭代中都创建了一个新对象。

但是当您尝试使用相同的方法删除它们时:

for i in range (1,a+1):
    entrylength_i.delete(0, "end")

变量entrylength_i仅指向最后定义的对象,这就是为什么仅清除最后一个对象的原因。

因此清除所有条目的正确方法是遍历列表e中的对象:

for entry in e:
    entry.delete(0, "end")