首先,我是Python的初学者,所以准备好迎接一个不起眼的问题))
在本网站的一个主题中,我发现了一些关于lambda函数使用的建议。
这是纠正之前的代码:
def entree1(self): #function that is supposed to change text in
self.configure(text = "X") the label block from whatever it is to 'X'
fen = Tk()
pole1 = Label(fen, text = '|_|')
pole1.bind("<Button-1>", lambda: entree1(pole1)) #event handler reffering to the function above
这是纠正后的代码:
def entree1(self): #function that is supposed to change text in
self.configure(text = "X") the label block from whatever it is to 'X'
fen = Tk()
pole1 = Label(fen, text = '|_|')
pole1.bind("<Button-1>", lambda x: entree1(pole1)) #event handler reffering to the function above
简而言之,我将 lambda:some func 更改为 lambda x:some func 。
虽然我无法弄清楚这两种变体之间的区别,但它很有效。 在我添加 x 后,您能否告诉我究竟有什么变化?
感谢您的时间!
答案 0 :(得分:1)
让我将lambda表达式转换为您可能更习惯的函数定义:
lambda : entree1(pole1)
与
相同def lambdaFunc():
global pole1
return entree1(pole1)
您的更正功能是
lambda x : entree1(pole1)
与
相同def lambdaFunc(x):
global pole1
return entree1(pole1)
你需要额外的参数,因为Tk按钮用变量调用它们绑定的函数(我完全忘记变量是什么),因此当不带一个输入变量时调用一个带有输入变量的函数会导致错误。