Очень просто сохранить все объекты Checkbutton
, созданные в функции generate()
, примерно так:
Сначала вам нужно List
.
Подсказка: используйте Словарь, если вам нужно хранить больше информации об объекте.
Добавить каждый Checkbutton
созданный.(List.append(c)..
)
Затем pack_forget()
Checkbutton
из List
с помощью цикла for
.Если вы не планируете использовать эти кнопки проверки в будущем, тогда используйте 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()