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