Как сделать и менять "слои" в tkinter

Вот у меня есть прога, на ней виджеты, как сделать так чтобы при нажатии на кнопку у меня эти виджеты пропадали, и появлялись новые?


Ответы (2 шт):

Автор решения: Donovan

Самое простое - убирание с экрана ненужных виджетов с помощью pack_forget()/place_forget()/grid_remove() и установки нужных с помощью pack/place/grid. Для удобства можно виджеты "засунуть" в Frame и убирать/добавлять уже его.

Небольшая реализация в коде:

import tkinter as tk

root = tk.Tk()
root.geometry("400x400")

def b1_def():
    w1.pack_forget()
    w2.pack()

def b2_def():
    w1.pack()
    w2.pack_forget()

b1 = tk.Button(root, text="Убрать 1 виджет", command=b1_def)
b2 = tk.Button(root, text="Убрать 2 виджет", command=b2_def)

b1.pack()
b2.pack()

w1 = tk.Label(root, text="1 виджет")
w2 = tk.Label(root, text="2 виджет")

w1.pack()
w2.pack()

tk.mainloop()
→ Ссылка
Автор решения: AlexGriz

Удаление виджетов из окна в tkinter осуществляется командой .destroy() Пример использования:

gef delete():
     canvas.destroy()
→ Ссылка