首页 > 解决方案 > 如何从列表中创建复选框

问题描述

我正在尝试学习使用 Python 进行编码。我正在尝试使用 for 循环从列表中创建检查按钮。在用户选中相应的框后,我希望得到原始列表的子集,其中仅包含与选中框对应的值。我已经让检查按钮显示正常,但是我需要做什么才能将复选框的值放入列表中?我看过几个例子,但我可能没有正确理解,因为我还在学习所有这些。谢谢您的帮助。

category_data = ['Home', 'Auto', 'Groceries','Medical']

for category in category_data:
    l=Checkbutton(root, text= category,onvalue = True, offvalue= False)
    l.pack(anchor=W)

标签: pythontkinter

解决方案


首先,您需要为BooleanVar每个分配一个Checkbox以获取其状态。然后你需要使用 adict来存储那些BooleanVar使用 category 作为键的。

稍后您可以通过dict创建所需的已检查类别列表。

from tkinter import *

root = Tk()

category_data = ['Home', 'Auto', 'Groceries', 'Medical']

cb_vars = {}  # dict to store the BooleanVar
for category in category_data:
    var = BooleanVar()
    l = Checkbutton(root, text=category, variable=var, onvalue=True, offvalue=False)
    l.pack(anchor=W)
    cb_vars[category] = var  # store the BooleanVar

def show_selected_categories():
    selected_category = [c for c in cb_vars if cb_vars[c].get()]
    print(selected_category)

Button(root, text="Check", command=show_selected_categories).pack()

root.mainloop()

推荐阅读