无法在Python中删除辅助框架

时间:2018-08-25 22:33:31

标签: python tkinter

在尝试学习一些基本的Python和TKinter方面,我是一个新手。

我已经编写了一些简单的代码来创建和填充按钮上的第二个框架,但是用完后无法删除该框架。如果我使用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()

1 个答案:

答案 0 :(得分:1)

使用grid geometry manager而不是pack添加了框架:

edit_frame.grid(row=3,rowspan=7, column=2)

...因此,根据我们的需要,必须使用grid_remove()方法或grid_forget()来删除它:

try:
    frame_name.grid_remove()
    print('destroyed')