Как удалить все виджеты, но оставить окно в Python Tkinter? - PullRequest
0 голосов
/ 22 июня 2019

Я хочу отобразить другой кадр GUI после моего первого, в том же окне.Как я могу удалить только записи, метки и кнопки?

Я пробовал root.destory и pack.forget, но мне не удалось сделать это правильно.

Ответы [ 2 ]

1 голос
/ 22 июня 2019

Если это то, что вы ожидаете сделать много, одно очень простое решение - поместить рамку в качестве единственного виджета прямо в корневое окно. Затем поместите все остальные виджеты в рамку. Когда вы будете готовы удалить все виджеты, все, что вам нужно сделать, это уничтожить этот фрейм, и все его дочерние элементы будут автоматически уничтожены.

Хотя, честно говоря, тривиально просто просмотреть результат root.winfo_children() и удалить все виджеты.

0 голосов
/ 22 июня 2019

Я думаю, что это будет работать:

def all_children(window):
    _list = window.winfo_children()
    for item in _list:
        if item.winfo_children():
            _list.extend(item.winfo_children())
    return _list


widget_list = all_children(root)
for item in widget_list:
    item.pack_forget()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...