首页 > 解决方案 > 使用 tkinter 创建可变数量的检查按钮

问题描述

我正在尝试使用 tkinter 创建可变数量的检查按钮。我还创建了一个“删除”按钮。当我点击它时,它什么也不做。当我向检查按钮添加命令时,它们的行为就好像所有命令都是相同的,返回列表中最后一个检查按钮的值。在任何情况下,当我填写这些框时,检查按钮的变量都不会更改为 onvalue。为什么?非常感谢。

l = 3

checkbox_vars = [0]*l
checkbuttons = [0]*l
for i in range(l):
    checkbox_vars[i] = tk.IntVar()

    checkbuttons[i] = tk.Checkbutton(
        query_env,
        text=names[i] + SUFFIX_TXT,
        variable = checkbox_vars[i],
        command=lambda: print(i, checkbox_vars[i].get())
        )
    checkbuttons[i].pack()

names_updated = names
def delete():
    for i in range(l):
        if checkbox_vars[i].get() is True:
            names_updated.remove(names[i])
            print(names_updated)
            filepath = pathlib.Path(DATAFOLDER + names[i] + SUFFIX_TXT)
            filepath.unlink()
            checkbuttons[i].destroy()

delete_btn = tk.Button(
    query_env,
    text=GUI_DELETE,
    command=delete)
delete_btn.pack()

标签: tkintertkinter.checkbutton

解决方案


推荐阅读