Griffon Абсолютно прав. Технология поиска связанных данных в tkinter отсутствует, посему можно только так…
# практическая задача по уроку bind
from Tkinter import *
f = [25, 25]
def df150x25(event):
fra.config(width=150, height=25)
def df70x250(event):
fra.config(width=70, height=250)
def df200x40(event):
fra.config(width=200, height=400)
root = Tk()
root.geometry("600x600+100+100")
fra = Frame(root, width=f[0], height=f[1], bg='red')
but150x25 = Button(root, text=u'150 x 25', font='Tahoma 8')
but70x250 = Button(root, text=u'70 x 250', font='Tahoma 8')
but200x40 = Button(root, text=u'200 x 40', font='Tahoma 8')
fra.grid(row=0, column=0)
but150x25.grid(row=1, column=0)
but70x250.grid(row=2, column=0)
but200x40.grid(row=3, column=0)
fra.pack()
but150x25.pack()
but70x250.pack()
but200x40.pack()
but150x25.bind('<Button-1>', df150x25)
but70x250.bind('<Button-1>', df70x250)
but200x40.bind('<Button-1>', df200x40)
root.mainloop()
P.S. Ламбда - это выражение (ее еще называют анонимной функцией) которое, в отличии от инструкции def возвращает функцию а не связывает ее с именем. В методе bind она позволяет передавать на функцию дополнительные параметры. Если ее не использовать на функцию будет передаваться только event (т.е. событие). На самом деле это событие несет в себе тоже немало полезных няшек, но…
Пример:
def call(event, data):
print data
bt.bind("<Button-1>", call(data))
В этом случае методу bind присваивается не объект функции (как ожидается), а результат ее выполнения - что в корне неверно. На помощь приходит анонимная функция lambda. Мы знаем, что что метод bind передает на функцию вызова первый аргумент-событие (зачастую его называют event). Этими знаниями мы и воспользуемся, переписав вызов, чтобы на функцию передавалось другое, нам нужное, значение.
def call(event, data):
print data
bt.bind("<Button-1>", lambda event: call(event, data))
Теперь в метод bind передается функция, так как lambda возвращает именно функцию, которая в свою очередь сама передаст данные в функцию call.
Что-то я сегодня в ударе :)