【发布时间】:2015-06-18 20:17:10
【问题描述】:
我正在使用 tkinter 并且对 lambda 函数感到困惑。第一条语句在command = lambda: Main.new_file(self.pt) 中使用lambda:。而第二个语句需要lambda x:
# 1st statement
filemenu.add_command(label='New', accelerator='Ctrl+N', underline=0, command= lambda: Main.new_file(self.pt))
#2nd Statement
self.frame.bind('<Configure>', lambda x: self.canvas.configure(scrollregion=self.canvas.bbox('all')))
【问题讨论】:
-
lambda基本上只是一个内联函数。lambda可以理解为def myfunc():,lambda x:可以理解为def myfunc(x): -
前者是一个不带参数的lambda。后者是一个接受单个参数的 lambda,它被命名为
x。 -
如前所述,
x是一个参数。在这里使用它是因为使用菜单项不会将参数传递给回调函数,但Configure事件(以及其他事件,如键盘/鼠标事件)确实会将参数传递给它们的回调函数。
标签: python python-3.x lambda tkinter