Tal*_*sin 77 python tkinter python-3.x
看完我在lambda上找到的一切后,我仍然不明白如何让它做我想做的事.
每个人都使用这个例子:
lambda x, y : x + y
Run Code Online (Sandbox Code Playgroud)
为什么你需要在两者之前x和y之前说明:?另外你如何让它返回多个参数?
例如:
self.buttonAdd_1 = Button(self, text='+', command=lambda : self.calculate(self.buttonOut_1.grid_info(), 1))
Run Code Online (Sandbox Code Playgroud)
这很好用.但是以下代码不会:
self.entry_1.bind("<Return>", lambda : self.calculate(self.buttonOut_1.grid_info(), 1))
Run Code Online (Sandbox Code Playgroud)
它产生错误:
TypeError :()不带参数(给定1个)
phi*_*ler 119
为什么你需要在':'之前说明'x'和'y'?
因为lambda(在概念上)与函数相同,所以只是内联编写.你的例子相当于
def f(x, y) : return x + y
Run Code Online (Sandbox Code Playgroud)
只是没有将它绑定到像这样的名称f.
另外你如何让它返回多个参数?
与功能相同的方式.最好是返回一个元组:
lambda x, y: (x+y, x-y)
Run Code Online (Sandbox Code Playgroud)
或者列表,类或其他什么.
self.entry_1.bindDemosthenex应该回答这个问题.
Dem*_*nex 11
我相信bind总是试图发送一个事件参数.尝试:
self.entry_1.bind("<Return>", lambda event: self.calculate(self.buttonOut_1.grid_info(), 1))
Run Code Online (Sandbox Code Playgroud)
您接受参数并且从不使用它.
为什么你需要在两者之前
x和y之前说明:?
因为它是一个函数定义,它需要知道函数接受什么参数,以及按什么顺序.它不仅可以查看表达式并使用变量名称,因为其中一些名称可能要使用现有的本地或全局变量值,即使它这样做,也不知道它的顺序是什么应该期望得到它们.
您的错误消息表示Tk使用一个参数调用您的lambda,而您的lambda编写为不接受任何参数.如果您不需要参数,只需接受一个,不要使用它.(Demosthenex有代码,我会发布它,但被打败了.)
| 归档时间: |
|
| 查看次数: |
168585 次 |
| 最近记录: |