Как очистить все элементы холста, кроме элементов ввода? - PullRequest
0 голосов
/ 23 апреля 2019

Я хочу удалить все элементы холста в tkinter, кроме элементов entry. Есть ли способ сделать это?

1 Ответ

0 голосов
/ 23 апреля 2019

Один из подходов - хранить ссылки на каждый виджет в коллекциях, которыми можно управлять независимо. Здесь мы отдельно храним Label, Button и Entry. При нажатии кнопки remove all but entry все виджеты уничтожаются, кроме Entries

import tkinter as tk


def remove_all_but_entries():
    for button in buttons:
        button.destroy()
    for label in labels:
        label.destroy()


root = tk.Tk()

labels = []
labels.append(tk.Label(root, text='make disappear example'))
for label in labels:
    label.pack()

buttons = []
buttons.append(tk.Button(root, text='start', command=lambda: print('button start')))
buttons.append(tk.Button(root, text='stop', command=lambda: print('button stop')))
buttons.append(tk.Button(root, text='remove all but entry', command=remove_all_but_entries))
for button in buttons:
    button.pack()

entries = []
entries.append(tk.Entry(root))
for entry in entries:
    entry.pack()

root.mainloop() 
...