Python 有没有办法在for循环中创建具有相同功能但具有不同属性的按钮?

Python 有没有办法在for循环中创建具有相同功能但具有不同属性的按钮?,python,tkinter,Python,Tkinter,我正在尝试创建几个按钮,这样每个按钮都将激活相同的功能,但属性会发生变化。可能发生的情况是,我从for循环中获取的值是它生成的最后一个值。代码如下: from tkinter import Tk, Button root = Tk() root.geometry('500x500') def add(num): print(num) return num + 5 num_list = [1, 2, 3, 4, 5] for i in range(len(num_list))

我正在尝试创建几个按钮,这样每个按钮都将激活相同的功能,但属性会发生变化。可能发生的情况是,我从for循环中获取的值是它生成的最后一个值。代码如下:

from tkinter import Tk, Button

root = Tk()
root.geometry('500x500')

def add(num):
    print(num)
    return num + 5

num_list = [1, 2, 3, 4, 5]
for i in range(len(num_list)):
    Button(root, text=str(num_list[i]), command=lambda: print(add(num_list[i]))).place(x=350 ,y=250+i*20)

root.mainloop()

在下面的代码中,无论单击哪个按钮,它都会发送5作为I(最后一个值)的值。

您只需向lambda调用添加一个变量,如下所示:

Button(root, text=str(num_list[i]), command=lambda i=i: print(add(num_list[i]))).place(x=350 ,y=250+i*20)
i=i将使程序按您希望的方式工作,因为它将使函数在创建按钮时接受i的值