我需要创建多个具有不同名称的按钮(每个新名称都等于前一个按钮的名称+当时的迭代值。)请帮帮我,这是我的代码。
buttons = [0]*len(gg.allStudents)
for j in range(len(gg.allStudents)):
buttons[j] = tk.Button(wind, text=gg.allStudents[j].name, height = 2, width = 20, command=lambda: plotMarks(j))
buttons[j].pack()
我使用了正确的循环条件。我唯一需要的帮助是找到一种方法来将每个具有新名称的新按钮存储到“按钮”列表中。
您的问题不在于您的想法。通过更改以下内容可以轻松解决:
command=lambda: plotMarks(j)
到command=lambda j=j: plotMarks(j)
。
起作用的原因是,在您的版本中,您将变量粘贴j
在所有命令中,并且所有命令的最终值都将使用j
。在第二个版本中,您将当前值保留j
在命令中。
要更好地了解这一点,我们要做的就是扩大范围lambdas
。
def add2(n):
return n+2
#equivalent of your current version
j = 6
def currentLambdaEquivalent():
global j
print(add2(j))
currentLambdaEquivalent() #8
#equivalent of second version
def alternateLambdaEquivalent(j):
print(add2(j))
alternateLambdaEquivalent(2) #4
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句