python - python tkinter按钮命令中使用或不使用lambda函数的区别
问题描述
在 tkinter 中使用 Button 小部件时我有一个问题。我是新来的。我注意到,当我们在 Button 小部件中使用命令时,有时我们会像这样调用一个简单的函数,有时我们会使用 lambda 函数然后调用它。有什么区别?
例如: tk.Button(window, text = "Click Me!", command = myfunction) tk.Button(win,text="Result",command=lambda: result(en1.get())
我们不能在没有 lambda 的情况下使用它吗?谢谢你。
解决方案
用途lambda
:
command
括号是当给定aButton
without时函数被执行的主要原因lambda
。如果函数(您传递给Button
a的函数command
)没有参数(要传递给自身),那么您可以简单地将其作为 a 传递,command
避免使用括号()
。因此,您不需要lambda
在这种情况下使用。就像在这个例子中:command=func
.所以
lambda
只有当函数有自己的参数(要传递给自己)时才需要使用。就像在这个 例子中一样:command=lambda:func(a,b,c)
做什么lambda
:
- 当您必须将参数传递给函数本身时,您无法避免
parentheses()
。 - 因此,在 的情况下
buttons
,lambda
基本上延迟函数的执行,直到用户单击按钮,通过在现场创建另一个函数,直到实际单击按钮时才调用该函数。因此,该函数不会被执行,它command
在Button
.
任何问题都会得到解答。
推荐阅读
- python - 如何在 BeautifulSoap 中提取结果字符串?
- python - 在列表中生成多个字典的有效方法
- azure - Azure VM 替换:传输 IP 地址和 FQDN
- google-fit - googlefit 数据存储在哪个时区
- javascript - 尝试使用 AsyncStorage 时应用程序崩溃
- javascript - 将对象从一个 ng-repeat 拖放到另一个 ng-repeat
- file-upload - HCL Domino AppDevPack - 写入除 .txt 以外的附件时出现问题
- php - 使用路由资源不支持 POST 方法
- ansible - 使用 ansible win_file 在 Windows 上的 azure 文件存储共享中创建文件夹
- javascript - 从 onclick 按钮事件向选项卡添加活动类