Форум сайта python.su
Доброе время суток вам.
Делаю калькулятор :)
как передать текст нажатой клавиши в функцию обработки нажатия, вроде там только событие можно передавать:
def die(event):
tv.set('1')
number_ = Button(frames, text=u'2', width=5)
number_.bind(“<Button-1>”, die)
number_.grid(row = 4, column = 0)
ну не использовать же свою функция для каждой кнопки калькулятора.
Спасибо за ответы.
Отредактировано (Ноя. 3, 2008 13:20:09)
Офлайн
ну можно например так сделать
number_.bind(“<Button-1>”, lambda event: tv.set(1))
Офлайн
nobodyzzzне подходит, функция которая должна вызываться не только tv.set(1) выполняет., а если записать вместо tv.set(1) мою функцию с параметром заданным как %s то выдает неправильный результат, вообще, который не должне ни когда появляться, виидимо в конструкции вида bind(“<Button-1>”, *) не пожет быть формальных параметров или как там они называются ((%s) % (var)).
ну можно например так сделать
number_.bind(“<Button-1>”, lambda event: tv.set(1))
Офлайн
может тебе такой пример поможет, правда там ошибки лезут..
# -*- coding: cp1251 -*-
from Tkinter import *
def a(event, tkOb,n):
print n
tkOb.destroy()
root = Tk()
button = Button(root)
button["width"]= 10
button["text"]= "OK"
button.bind("<Button>", lambda event:a("<Button>",root,1))
button.pack()
root.mainloop()
root1 = Tk()
button = Button(root1)
button["width"]= 10
button["text"]= "OK1"
button.bind("<Button>", lambda event:a("<Button>",root1,2))
button.pack()
root1.mainloop()
Отредактировано (Ноя. 23, 2008 13:22:59)
Офлайн