Не удаляется фрейм в 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()