1

我正在使用 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

谢谢

4

1 回答 1

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 函数(如果有意义的话!)

于 2012-06-20T23:15:22.920 回答