Я пытаюсь использовать лямбду для создания обратных вызовов для кнопок tkinter.
Есть несколько кнопок, и каждый обратный вызов должен передавать объект внутри него. Следующий код - то, что я делаю и работает нормально
var0 = tk.StringVar()
label = tk.Label(top, bg = "White",height = 2, width = 12,textvariable=var0, justify="right")
def b0Callback(var):
var.set(var.get()+"0")
return
# creating a label which will print value of the any of the 0-9 button pressed
# creating a button 0
b0 = tk.Button(numFrame0, height = 1, width = 4, bg = "grey", text =
"0",command = lambda: b0Callback(var0))
#there are more buttons like that
var0 используется для обновления метки. Выше код работает нормально, но я должен создать обратный вызов от 0 до 9, и я должен просто повторить приведенное выше определение. Поэтому я попытался использовать следующий пример из этого учебника
def myfunc(n):
return lambda a : a * n
mydoubler = myfunc(2)
mytripler = myfunc(3)
print(mydoubler(11))
print(mytripler(11))
Используя его, я сделал следующее
def Callback(n):
return lambda var.set(var.get()+n)
b0Callback = Callback("0")
Показывает неверный индекс ошибки в строке возврата в var.set
Есть ли способ передать var0 в этом случае, чтобы избежать этой ошибки?