Tkinter和IDLE中的递归

时间:2017-03-31 19:52:58

标签: python recursion tkinter

我目前正在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))

没有

0 个答案:

没有答案