这个问题在这里已有答案:
我想在Tkinter中创建多个按钮,在for循环中。问题是我正在迭代数据框(行中的值是我正在创建的Tkinter gadets的内容).iterrows,这意味着,我没有“i”,只有行和索引。
问题是,因为我正在创建按钮并使用lambda i给它们不同的命令:i = SomeFunction(somevariable),这里我必须使用除“i”之外的变量。结果是命令都在末尾引用了这个“somevariable”的最后一个值而不是它在创建按钮时的值。
import tkinter
def printout(somevariable):
print(somevariable)
window = tkinter.Tk()
i = 0
somevariable = 0
for index, rows in enumerate(["a","b","c","d"]):
b = tkinter.Button(window,
text=rows,
command= lambda i=i: printout(somevariable))
b.pack()
somevariable = somevariable + 1
window.mainloop()
并且所有按钮都包含as命令“somevariable”的最后一个值。
知道怎么做这个工作?