如何在tkinter中动态删除复选框?

2024-04-24 23:52:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用tkinter制作一种todo应用程序。为此,我想动态生成复选框,我已经成功地使用了一个函数,但我还想删除这些复选框,当用户按下清除按钮。怎么能做到呢。在

name=Stringvar()
ent=Entry(root,textvariable=name).pack()
def clear(ent):
    ent.pack_forget()
def generate():
    k=name.get()
    c=Checkbutton(root,text=k)
    c.pack()
btn1=Button(root,text="Submit",command=generate)
btn1.pack()
btn2=Button(root,text="Clear",command=clear)
btn2.pack()

我想删除复选框,但我不能这样做,因为函数clear没有读取c.pack_forget()


Tags: 函数textnamedefbuttonrootgeneratecommand
1条回答
网友
1楼 · 发布于 2024-04-24 23:52:31

只需存储在generate()函数中创建的Checkbutton的所有对象非常简单,如下所示

  1. 首先需要一个List。在

    提示:如果需要存储有关对象的更多信息,请使用Dictionary。

  2. 追加每个创建的Checkbutton。(List.append(c)..

  3. 然后pack_forget()for循环的帮助下,从List返回{}。如果您将来不打算使用这些复选按钮,请使用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()

如果您想分别删除每个选项而不是全部清除,请尝试此操作。在

^{pr2}$

相关问题 更多 >