lamba在循环内使用不同的参数

时间:2015-12-09 12:05:26

标签: python lambda tkinter

我创建了一个小GUI,我想在循环中创建按钮,打开一个文本文件。打开文本文件的功能位于我已经包含的另一个python模块中:

def openTextEditor(textfile):
"""opens the textfile with path 'textfile' """
    [...]

在我的实际循环中,我尝试为按钮分配不同的路径:

for path in foobar:
    print path
    tk.Button(text="EDIT",
              relief="tk.RAISED",
              bg='black',
              fg='white',
              command= lambda: openTextEditor(path) ).grid(row=r, column=c)

this post我知道我必须使用lamda表达式才能将参数作为按钮命令传递。

但是,我的控制台会打印不同的文本文件路径:

path1
path2
path3

虽然我的所有3个按钮都使用 path3 打开文本文件。我假设只有lambda函数的最后一个赋值有效,但为什么呢?

0 个答案:

没有答案