Python 有没有办法在for循环中创建具有相同功能但具有不同属性的按钮?
我正在尝试创建几个按钮,这样每个按钮都将激活相同的功能,但属性会发生变化。可能发生的情况是,我从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))
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的值