我目前正在Python 3.6中尝试一些ttk.tkinter但是在使用递归函数处理解释器中的列表和字典与在tkinter中使用它时遇到了一个奇怪的问题。虽然该函数在嵌套列表的解释器中按预期工作,但同一函数返回none而不是tkinter标签中的值。
complexList = {'1' : {'2': '3', 'tg': '7', 'prop': ['4', '5', '9', {'v':['d', 't']}]}}
def recurse2(item, obj):
for k, v in obj.items():
if item == k:
return k, v
elif isinstance(v, list):
for i in v:
if isinstance(i, str):
if item == i:
return (k, i)
elif isinstance (i, dict):
var = i
return dictrecurse2(k, item, var)
elif isinstance(v, dict):
var = v
return dictrecurse2(k, item, var)
def dictrecurse2(k, item, var):
for sk, sv in var.items():
if item == sk:
return k, sk, sv
elif item == sv:
return k, sk, sv
else:
return recurse2(item, var)
(解释程序)
print(recurse2('v', complexList))
的产率:
('prop', 'v', ['d', 't'])
这是大体上的意图。但是对于标签(按钮调用的功能)
searchitem = StringVar()
output = StringVar()
def search():
output.set(recurse2(searchitem.get(), complexList))
l = ttk.Label(root, textvariable = output)
l.grid(column =1, row =1)
startButton = ttk.Button(root, text = "Start", command = search)
startButton.grid(column =1, row = 2)
entry = ttk.Entry(root, textvariable = searchitem)
entry.grid(column =1, row =3)
标签显示“无”。 有什么明显的东西让我失踪吗? 提前谢谢!
编辑:
output.set(recurse2('1',complexList))
有效但
output.set(recurse2('v', complexList))
没有