当使用for语句创建多个按钮并使用lambda函数设置变量时,两个按钮都设置为设置相同的variab

2024-07-05 11:00:41 发布

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

代码

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`

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


Tags: textindocsdatadocifvaluedef