Tkinter通过for循环创建Checkbutton异常问题求助
问题原因
你用普通整数0作为Checkbutton的variable参数,但Tkinter的复选框需要绑定Tkinter专属的可变变量类型(比如IntVar),而非普通Python整数。普通整数是不可变类型,导致所有复选框实际共享了同一个值引用,所以点击任意一个会全选/全取消;同时直接访问checktab[i]拿到的只是初始的0,根本没追踪到复选框的状态变化。
修正后的代码
import tkinter checktab = [] Button = [] for i in range(len(repo_list)): # 用IntVar()替代普通整数,每个复选框绑定独立的变量 var = tkinter.IntVar() var.set(0) # 初始设为未勾选状态 checktab.append(var) Button.append(tkinter.Checkbutton(window, text=repo_list[i]["repo_name"], variable=var, onvalue=1, offvalue=0)) Button[i].pack()
获取复选框状态的正确方式
要获取某个复选框的状态,不能直接用checktab[i],而是调用变量的get()方法:
# 示例:获取第0个复选框的状态 status = checktab[0].get() # 返回1表示已勾选,0表示未勾选
内容的提问来源于stack exchange,提问作者Zefile
相关产品推荐
相关产品推荐

