只是存储在generate()函数中创建的Checkbutton所有对象非常简单
首先你需要一个List 。
提示:如果需要存储有关对象的更多信息,请使用“词典”。
附加每个创建的Checkbutton 。 ( List.append(c).. )
然后pack_forget()的Checkbutton从List的帮助下for循环。 如果您以后不打算使用这些Check按钮,请使用destroy()而不是pack_forget() 。
这是代码:
from tkinter import *
root = Tk()
name = StringVar()
check_box_list = []
ent=Entry(root,textvariable=name).pack()
def clear():
for i in check_box_list:
i.pack_forget() # forget checkbutton
# i.destroy() # use destroy if you dont need those checkbuttons in future
def generate():
k=name.get()
c=Checkbutton(root,text=k)
c.pack()
check_box_list.append(c) # add checkbutton
btn1=Button(root,text="Submit",command=generate)
btn1.pack()
btn2=Button(root,text="Clear",command=clear)
btn2.pack()
mainloop()
如果你想分别删除每一个而不是全部清除,那么试试这个。
from tkinter import *
root = Tk()
name = StringVar()
check_box_list = []
ent=Entry(root,textvariable=name).pack()
def clear():
for i in check_box_list:
if i.winfo_exists(): # Checks if the widget exists or not
i.pack_forget() # forget checkbutton
# i.destroy() # use destroy if you dont need those checkbuttons in future
def generate():
k=name.get()
f = Frame(root)
Checkbutton(f, var=StringVar(), text=k).pack(side='left')
Button(f, text='✕', command=f.destroy).pack(side='left')
check_box_list.append(f) # add Frame
f.pack()
btn1=Button(root,text="Submit",command=generate)
btn1.pack()
btn2=Button(root,text="Clear All",command=clear)
btn2.pack()
mainloop()