Я очень новичок в попытке выучить немного базовых Python и TKinter.
Я написал некоторый простой код для создания и заполнения 2-го кадра при нажатии кнопки, но я не могу удалить фрейм, когда я закончу с ним. Я могу удалить рамку, если я использую command=edit_frame.destroy
, но я хочу также выполнить некоторые другие действия по очистке, и поэтому я пытаюсь использовать для нее функцию.
Это мой код:
import tkinter as tk
root = tk.Tk()
root.title('Frames test')
root.geometry('490x310')
def edit_end(frame_name,items):
# do other clean up stuff
btn_edit_items.config(state="normal")
items.delete(0, 'end')
try:
frame_name.pack.forget
print('destroyed')
except:
print('something not right')
def edit_items():
btn_edit_items.config(state="disabled")
edit_frame = tk.Frame(root,bg="green")
edit_frame.grid(row=3,rowspan=7, column=2)
edit_frame.tkraise()
ef_items = tk.Listbox(edit_frame)
ef_items.grid(row=2,rowspan=7, column=1, padx=10, pady=2)
ef_items.insert('end', 'Item 2')
btn_remove = tk.Button(edit_frame, text='Remove', bg='white', command=lambda: edit_end(edit_frame,ef_items))
btn_remove.grid(row=0,column=1)
btn_edit_items = tk.Button(root, text='Edit', bg='white', command=edit_items)
btn_edit_items.grid(row=8,column=0, sticky='EW', padx=10, pady=2)
btn_exit = tk.Button(root, text='Exit', bg='white', command=exit)
btn_exit.grid(row=9,column=0)
list_frame = tk.Frame(root, bg="red")
list_frame.grid(row=4,rowspan=7,column=1)
lb_items = tk.Listbox(list_frame)
lb_items.grid(row=2,rowspan=7, column=1, padx=10, pady=2)
lb_items.insert('end', 'Item one')
# Start the main events loop
root.mainloop()