Как удалить все дочерние элементы, кроме 1 конкретного виджета? - PullRequest
0 голосов
/ 17 октября 2018

У меня есть кадр, в котором я пытаюсь удалить все дочерние виджеты, кроме одного, в частности.Я знаком с удалением ВСЕХ детей с:

for child in frame.winfo_children():
    child.destroy()

. Я даже могу предотвратить удаление определенного ТИПА виджета (скажем, кнопки) с помощью:

for child in frame.winfo_children():
    if child.winfo_class() != 'Button':
        child.destroy()

Что я хочудолжен иметь возможность удалить все дочерние элементы всех типов, кроме одного определенного виджета.Вот полнофункциональный пример ниже.Я хочу уничтожить все, КРОМЕ keep_me.

import tkinter as tk
root = tk.Tk()
frame = tk.Frame(root)
frame.grid(column=0, row=0)
keep_me = tk.Button(frame, text='Keep me')
keep_me.grid(column=0, row=0)
destroy_me = tk.Button(frame, text='Expendable')
destroy_me.grid(column=0, row=1)

for child in frame.winfo_children():
    # Here's where I need help. Don't know how to single-out 'keep_me'
    child.destroy()

1 Ответ

0 голосов
/ 17 октября 2018

Вы можете просто увидеть, равна ли переменная, которую вы использовали для сохранения виджета, дочернему элементу, т. Е.

for child in frame.winfo_children():
    # Here's where I need help. Don't know how to single-out 'keep_me'
    if child != keep_me:
        child.destroy()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...