首页 > 解决方案 > 当使用 for 语句创建多个按钮并使用 lambda 函数设置变量时,按钮都设置为设置相同的变量

问题描述

编码

def OpenDocument(Doc):
    file = "./Account Data/Saved Docs/" + Doc
    with open(file, 'r') as f:
        content = f.readlines()
    print("Document context: " + str(content))
    Space()


def BringUpDocs():
    global globUser
    a = 0
    i = 1
    e = os.listdir("./Account Data/Saved Docs")
    text = "." + globUser

    for index in range(len(e)):
        if text in e[a]:
            if i == 1:
                Value = e[a]
                SaveData(Value)

            else:
                Value = e[a]
                SaveData(Value)

            Button(master, text=e[a],command=lambda *args: OpenDocument(Value)).grid(row=1,column=i)

            i = i + 1
            a = a + 1`

问题是当我运行它时,由此创建的所有按钮都将变量设置为相同的东西。我如何让他们将其设置为正确的值,而不是将其设置为由该函数的值创建的最后一个按钮?我认为这将帮助许多在这类问题上苦苦挣扎的人。

标签: pythonpython-3.x

解决方案


推荐阅读