如何解决在tkinter中创建多个具有不同名称的按钮
我需要创建多个具有不同名称的按钮(每个新名称都等于前一个按钮的名称+当时的迭代值。)请帮帮我,这是我的代码。
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。