Пытаюсь очистить записи, но я очищаю только последний - PullRequest
0 голосов

Я создаю функцию, чтобы связать ее с, но поэтому, когда я нажимаю кнопку, все все записи в моей программе будут очищены. Когда я запускаю функцию, очищается только последняя.

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 Ответ

1 голос
/ 10 мая 2019

Поскольку вы упомянули, что создали свои записи так же, как пытаетесь их очистить, я предполагаю, что вы делаете что-то вроде:

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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...