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

2024-03-28 11:56:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个函数来绑定它,但是当我按下按钮时,程序中的所有条目都将被清除。当我运行函数时,只有最后一个被清除

另外,所有的条目都是用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")

Tags: 函数in程序fordef条目rangedelete
1条回答
网友
1楼 · 发布于 2024-03-28 11:56:37

既然您提到您创建条目的方式与清除条目的方式相同,我假设您会执行以下操作:

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")

相关问题 更多 >