Tkinter和IDLE中的递归

2024-09-29 19:22:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试一些ttk.tkinter公司但在python3.6中,我遇到了一个奇怪的问题:在解释器中使用递归函数处理列表和字典,而不是在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)

标签显示“无”。 我有什么明显的遗漏吗? 提前谢谢!你知道吗

编辑:

你知道吗输出.set(recurse2('1',complexList))

工作但是

output.set(recurse2('v', complexList))

没有


Tags: 函数outputreturniftkintervar标签item

热门问题