You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tkinter Python提取checkbox复选框值报错问题求助

报错原因与修复方案

错误根源

你遇到的"str" object has no attribute "get"报错,核心是var_list中存储的内容不符合预期:

  • 代码中var_list=list(a_dictionary.keys())生成的列表存储的是"vari0"、"vari1"这类字符串键,而非你创建的StringVar对象,字符串自然没有get()方法
  • 同时你给Checkbutton的variable参数传入字符串也不符合规范,该参数要求传入Tkinter内置的变量对象(如StringVar、BooleanVar)

修复方法

仅需调整1处核心逻辑即可:把var_list的生成逻辑从「取字典键」改为「取字典值」,同时移到循环外避免重复生成,其余代码不需要修改即可正常运行。

修改后的完整代码

for number in range(len(checklist_prt)):    
    a_dictionary["vari{0}".format(number)] = StringVar()
    row_num.append(number)
# 核心修改:移到循环外,取字典的值存储StringVar对象
var_list = list(a_dictionary.values()) 

for x in range(len(checklist_prt)):
    button_1_checklist_1=Checkbutton(checklist_part,text=checklist_prt[x],variable=var_list[x])
    button_1_checklist_1.deselect()
    button_1_checklist_1.grid(row=row_num[x],column=0,sticky='w')

def vlu():
    for x in range(len(checklist_prt)):
        print(var_list[x].get())
        
values=Button(checklist_part,text="Vlu",command=vlu)
values.grid(row=len(checklist_prt)+1,column=0,sticky='w')

可选优化

如果只是需要判断复选框是否选中,可将StringVar替换为BooleanVar,取值会直接返回True/False,更便于逻辑判断。

内容的提问来源于stack exchange,提问作者jthomasc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 13:54:04