python - 在 tkinter 中迭代复选框
问题描述
我目前正在学习我的第一个 tkinter 并且遇到了一个我无法真正理解的小问题。基本上我需要根据我拥有的一些字典(有时可能会有所不同)显示一堆复选框,例如dict1
如下所示。在这种情况下,每个元素都有一个value
of True
。现在,下面的代码是我迄今为止一直在尝试做的,它实际上打印出len(dict1)
复选框,但只检查了最后一个 - 我真的不明白。那么我该如何修复它,以便根据每个字典项的布尔语句检查所有复选框(至少在这种情况下)dict1
?
from tkinter import *
class MainPlot:
def __init__(self, frame1):
self.frame1 = frame1
for i, (key, value) in enumerate(dict1.items()):
self.CheckVar, self.C = dict(), dict()
self.CheckVar[key] = IntVar(self.frame1)
self.CheckVar[key].set(value[1])
self.C[key] = Checkbutton(self.frame1, text = key, variable=self.CheckVar[key], onvalue = True, offvalue = False)
self.C[key].grid(row=i, column=0, sticky=NW)
list1 = ["channel1", "channel2"]
dict1 = {"key1": [list1, True],
"key2": [list1, True],
"key3": [list1, True],
"key4": [list1, True],
"key5": [list1, True],
"key6": [list1, True],
"key7": [list1, True],
"key7": [list1, True]
}
解决方案
这是因为你在for循环中重新创建了self.CheckVar
and self.C
,所以它们只包含for循环中的最后一项。
self.CheckVar, self.C = dict(), dict()
在 for 循环之前移动该行将解决问题:
self.CheckVar, self.C = dict(), dict()
for i, (key, value) in enumerate(dict1.items()):
...
推荐阅读
- python - Python:时间数据与格式不匹配
- amazon-web-services - AWS EMR Notebook 未进入“运行”状态
- javascript - 如何在 React Cropper 中为 img 添加属性
- flutter - 如何解决:任务':app:compileFlutterBuildDebug'执行失败
- browser - 当被另一个窗口遮挡时检测浏览器窗口的可见性
- javascript - 单击按钮后删除创建的输入
- css - 在 Justify-content:, align-items: & text-align 之间混淆
- mysql - Sequelize:具有 HasMany 关联的批量插入给出不正确的结果
- django - 如何在一串html代码中替换django条件模板标签
- python - 将文件中的多个json对象转换为python中的列表