Могу ли я использовать элементы списка как переменные, а не как строки в Tkinter Python? - PullRequest
0 голосов
/ 19 июня 2020

Я создал записи с Tkinter под названием «яблоко», «банан» и «апельсин». Я хочу удалить все, что было в них помещено.

apple = Entry(root)
banana = Entry(root)
orange = Entry(root)

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

apple.delete(0, END)    
banana.delete(0, END)

et c.

Я хотел использовать список

lst = ['apple', 'banana', 'orange']

, чтобы я мог использовать:

for i in lst:
    i.delete(0, END)

Но это дает мне ошибку:

AttributeError: 'str' object has no attribute 'delete'

Есть ли способ, как я мог бы сделать это, или я думаю совершенно неправильно и должен ли я сделать это по-другому?

Ответы [ 2 ]

0 голосов
/ 19 июня 2020

Вы можете сохранить виджеты в список. Это python объекты, поэтому вы можете использовать их как любой другой объект.

apple = tk.Text(...)
banana = tk.Text(...)
orange = tk.Text(...)
...
lst = [apple, banana, orange, ...]
...
for widget in lst:
    widget.delete(0, "end")
0 голосов
/ 19 июня 2020

Где-то в вашем коде у вас есть код, который выполняет:

apple = Fruit("red")
banana = Fruit("yellow")
grape = Fruit("purple")
# etc

(я не уверен, что это за тип, и не знаком с tkinter, но я так понимаю, они вид объекта. Какой вид на самом деле не имеет значения для целей этой концепции.)

Вместо хранения фактических строк «яблоко», «банан» и c вы хотите поместить эти объекты в список:

fruits = [Fruit("red"), Fruit("yellow"), Fruit("purple")]

и теперь вы можете:

for fruit in fruits:
    fruit.delete(0, END)
...