Python 如何使用不同的命令在tkinter上执行多个按钮?
所以我的问题是在这个程序中,我想创建“x”按钮(x是列表的长度),每个按钮都有列表中元素的名称,并用元素的名称作为参数调用函数“ChoicePage” 例如: 如果我有一个这样的列表,Python 如何使用不同的命令在tkinter上执行多个按钮?,python,tkinter,Python,Tkinter,所以我的问题是在这个程序中,我想创建“x”按钮(x是列表的长度),每个按钮都有列表中元素的名称,并用元素的名称作为参数调用函数“ChoicePage” 例如: 如果我有一个这样的列表,[house,hospital,shop],程序会创建3个按钮:house,hospital和shop,它们通过a=“house”,“hospital”或“shop”调用ChoicePage(a) 这里的问题是,它总是使用列表的最后一个元素调用ChoicePage(在前面的示例中,它将是“shop”) 如何修复此问
[house,hospital,shop]
,程序会创建3个按钮:house,hospital和shop,它们通过a=“house”,“hospital”或“shop”调用ChoicePage(a)
这里的问题是,它总是使用列表的最后一个元素调用ChoicePage(在前面的示例中,它将是“shop”)
如何修复此问题?当在循环中创建lambda时,它们最终绑定到同一个变量(该变量具有上次循环迭代的值)。可以使用partial将值绑定到函数,也可以使用其他方法在函数中存储值
from functools import partial
for i in range(len(L)):
a = L[i]
Button(fen1, text=a, relief=RAISED, command = partial(ChoicePage, a)).pack()
fen1.mainloop()
在循环中创建lambda时,它们最终绑定到同一个变量(该变量具有上一次循环迭代的值)。可以使用partial将值绑定到函数,也可以使用其他方法在函数中存储值
from functools import partial
for i in range(len(L)):
a = L[i]
Button(fen1, text=a, relief=RAISED, command = partial(ChoicePage, a)).pack()
fen1.mainloop()
你应该这样称呼lambda:
command=lambda m=a: ChoicePage(var=m)
其中,var
应该是ChoicePage
函数的参数
这样,变量将对应于右按钮存储,您应该这样调用lambda:
command=lambda m=a: ChoicePage(var=m)
其中,var
应该是ChoicePage
函数的参数
通过这种方式,变量将对应右按钮进行存储偶数
lambda
s可以正确使用。偶数lambda
s可以正确使用。