【发布时间】:2020-02-28 02:30:35
【问题描述】:
我正在尝试编写一些循环来从字典中检索值并将它们打印为检查按钮。我遇到的问题是,当我使用键入的代码时,我得到 PY_VAR01 等作为我的“名称”
我知道我需要使用 .get() 来获取值,但是当我输入 text=versions[2]['Name'].get() 时,我的名字显示为空白。我一直在寻找和尝试不同的东西,但无法得到任何帮助,如果有人能指出我正确的方向,我将不胜感激。
versions = { 1: {'Name': '5.11 - CO', 'Location': '#',
'Name': 'WS 2016 V1607', 'Location': '#',
'Name': 'Win 10 PRO V1803', 'Location': '#',
'Name': 'TEST 1', 'Location': '#',
'Name': 'TEST 2', 'Location': '#',
'Name': 'Test 3', 'Location': '#',
'Name': 'TEST 4', 'Location': '#',
'Name': 'TEST 5', 'Location': '#',
},
2: {'Name':
# Version_5_5_EAC
v5_5_eac_options = Frame(optionsScreen)
v5_5_eac_options.grid()
for Name in versions:
versions[1]['Name'] = Variable()
l = Checkbutton(v5_5_eac_options, text=versions[1]['Name'], variable=versions[1]['Name'])
l.pack()
我希望复选框打印关联名称(即 5.5 - (EAC))而不是 PY_VAR01
非常感谢所有提供帮助的人。现在我修复了字典,大部分时间都可以正常工作了。
这是我更新的 for 循环代码,但它用相同的变量命名每个复选框,所以我需要再搞砸它。
for Name in versions[1]:
var = Variable()
l = Checkbutton(v5_5_eac_options, text=versions[1][4]['Name'], variable=var)
l.pack()
【问题讨论】:
-
您的
versionsdict 文字有很多重复键;只有给定键的最后一个值实际上存储在字典中。 -
这应该是一个字典列表,或者你应该将名称和位置作为字典的键和值。
-
for Name in versions:循环的目的是什么?你从不使用Name变量,你在任何地方都硬编码了versions[1]。 -
你为什么要分配给
version[1]['Name']?这将替换versions字典中的任何内容。 -
您不应更改问题以匹配答案。现在答案没有意义了。
标签: python python-2.7 dictionary for-loop tkinter