我正在使用Tkinter,我想知道是否有办法为一堆按钮命令定义一个回调函数,其中命令的名称类似于' callback1', callback2'等
我正在创建这样的按钮(它是日历的一部分):
buttonlist = ['c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7']
daylist = ['mo', 'tu', 'we', 'th', 'fr', 'sa', 'su']
counter = 0
daycount = -1
for item in buttonlist:
counter = counter + 1
daycount = daycount + 1
item = Tkinter.Button(label1, width=5, bg = 'white',
text = daylist[daycount])
item.grid(row=0, column = counter, padx=5, pady=5)
我可以手动为每个按钮添加一个命令,并为每个按钮定义一个函数,但我宁愿只需定义一个函数,并在for循环中给出命令唯一的名称,因为我还有一个按钮这个月的每一天。
有没有办法做到这一点? 我使用的是Python 2.7.2
由于
答案 0 :(得分:2)
自从我使用Tkinter以来很长一段时间
首先,您可以将循环修改为(根据需要进行调整):
for idx, (bl, dl) in enumerate(zip(buttonlist, daylist)):
TKinter.Button(text=dl, command=lambda: button_pressed(bl))
然后在适当的地方:
def button_pressed(which):
print 'I am button {}'.format(b1)
lambda函数创建一个匿名函数,其作用是使用按下的按钮调用button_pressed函数(如果有意义的话!)