使用不同的命令创建多个Tkinter按钮但外部变量[重复]

问题描述 投票:-2回答:2

这个问题在这里已有答案:

我想在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”的最后一个值。

知道怎么做这个工作?

python python-2.7 loops button tkinter
2个回答
© www.soinside.com 2019 - 2024. All rights reserved.