Не удаляется фрейм в tkinter

Хотел сделать чтобы фрейм исчез/скрылся/сгинул по нажатию кнопки, однако он при нажатии на кнопку он просто смещается на несколько пикселей и ничего не происходит, используй я pack_forget() или destroy()

windowmain = Tk()
windowmain.geometry('800x600')
windowmain. title('test')
windowmain.resizable(False, False)

def mainframe(window, name):
    frame = ttk.Frame(master=window, borderwidth=2, relief=SOLID, padding=[11, 11])
    frame.pack(anchor=N)
    lbl = ttk.Label(text=name)
    lbl.pack(anchor=N)
    btn = ttk.Button(text='Close')
    btn.config(command= lambda: close(frame))
    btn.pack(anchor=N)
    return frame

def close(target):
    target.pack_forget()

frame1 = mainframe(windowmain, 'VOVA')
mainloop()

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

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

Спасибо Сергею Кох. Я действительно не указал родительский фрейм для виджетов. Без этого фрейм удалялся с экрана, а "его" компоненты нет. Именно потому все виджеты смещались на несколько пикселей.

Рабочий вариант стал выглядеть так

windowmain = Tk()
windowmain.geometry('800x600')
windowmain. title('test')
windowmain.resizable(False, False)

def mainframe(window, name):
    frame = ttk.Frame(master=window, borderwidth=2, relief=SOLID, padding=[11, 11])
    frame.pack(anchor=N)
    lbl = ttk.Label(master=frame ,text=name)
    lbl.pack(anchor=N)
    btn = ttk.Button(master= frame, text='Close')
    btn.config(command= lambda: close(frame))
    btn.pack(anchor=N)
    return frame

def close(target):
    target.pack_forget()

frame1 = mainframe(windowmain, 'VOVA')
mainloop()
→ Ссылка