首页 > 其他分享 >为什么button command 不需要lambda函数添加参数 但是 bind 需要

为什么button command 不需要lambda函数添加参数 但是 bind 需要

时间:2024-01-29 15:31:57浏览次数:25  
标签:函数 bind button 参数 combo command lambda


        combo = tk.ttk.Combobox(frame_combo, values=self.lis, width=25, font=("Microsoft YaHei", 20))
        combo.pack(side='top', anchor="nw")
        combo.set("请选择功能")
        combo.option_add("*TCombobox*Listbox.font", "宋体 20")
        combo.bind("<<ComboboxSelected>>", lambda event: self.update(combo, text_desc, frame_radio))

这是因为 `tkinter` 中的 `Button` 控件的 `command` 参数和 `bind` 方法处理事件的方式不同¹²³⁴。


- `Button` 控件的 `command` 参数:当你点击按钮时,`command` 参数指定的函数会被调用²。这个函数通常不需要接收任何参数,因为它的行为不依赖于任何外部输入²。如果你希望 `command` 参数指定的函数能够接收一些参数,你可以使用 `lambda` 函数来创建一个新的无参数函数,这个新函数在被调用时会调用原函数并传入指定的参数²。


- `bind` 方法:当指定的事件发生时,`bind` 方法会调用指定的函数,并自动传入一个事件对象作为参数¹³⁴。这个事件对象包含了关于事件的信息,比如事件的类型、发生的时间、发生的位置等¹³⁴。因此,你需要在 `bind` 方法指定的函数中添加一个参数来接收这个事件对象¹³⁴。


总的来说,`Button` 控件的 `command` 参数和 `bind` 方法处理事件的方式不同,这就导致了 `command` 参数不需要 `lambda` 函数添加参数,但是 `bind` 方法需要 `lambda` 函数添加参数¹²³⁴。希望这个解答对你有所帮助!


源: 与必应的对话, 2024/1/29

(1) Python tkinter bind三种方法传参,不用lambda表达式也可以(任何人都会) - CSDN博客. https://blog.csdn.net/2301_77245958/article/details/129770324.

(2) Tkinter Button控件command传参问题的解决方式 - CSDN博客. https://blog.csdn.net/weixin_44786530/article/details/110070379.

(3) Python中的TK的Button如何在command后面函数添加参数解决方法 - 黑羽青衣 - 博客园. https://www.cnblogs.com/duanminkid/p/14871179.html.

(4) tkinter command传参问题解决 - p0ise - 博客园. https://www.cnblogs.com/p0ise/articles/how-to-pass-arguments-to-a-button-command-in-tkinter.html.

(5) C++11的bind函数 - WindSun - 博客园. https://www.cnblogs.com/WindSun/p/13069887.html.

标签:函数,bind,button,参数,combo,command,lambda
From: https://blog.51cto.com/u_16055028/9465971

相关文章

  • 在 `tkinter` 中,我们经常使用匿名函数(也称为 `lambda` 函数)来处理按钮点击等事件的回
    在`tkinter`中,我们经常使用匿名函数(也称为`lambda`函数)来处理按钮点击等事件的回调函数¹²。当你使用`tkinter`的`.bind()`或者`Button`的`command`参数来绑定一个函数时,`tkinter`会自动传递一个事件对象给这个函数¹。如果你的函数需要接受额外的参数,或者你不希望......
  • 阿里云服务器Centos镜像解决方案apt-get: command not found
    阿里云服务器Centos镜像解决方案apt-get:commandnotfound:https://blog.csdn.net/qq_45848361/article/details/110359637?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170616908216800227442979%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257......
  • BindingException: Invalidbound statement (not found)
    一、报错二、原因未扫描到Mapper文件三、解决方式一mybatis:mapperLocations:classpath:mapper/**/*.xml方式二<!--项目打包时会将java目录中的*.xml文件也进行打包--><build><resources><resource><directory>src/main/java</di......
  • kettle报错ldconfig: command not found解决方法
    一、前言之前测试服务器有一个kettle是正常的;后来让换服务器,把kettle迁移后,就发现了问题。1.手动执行以下命令是可以运行kettle的:LOG_DATE=`date+%Y%m%d`LOG_PATH=/home/admin/kettle/logs/mykettle_${LOG_DATE}.logKJB_PATH=/home/admin/kettle/kjb/home/admin/kettle/dat......
  • Linux中的bind是什么意思?有哪些命令?
    在Linux操作系统中,内置了很多命令,借助这些命令我们可以完成各种各样的工作,而且身为一名专业的运维工程师,掌握命令是必备的技能。那么Linux中的bind是什么意思?以下是具体内容介绍。在Linux中,bind是一条命令行工具,也是一个系统调用函数,它用于将一个网络套接字与指定的地址和......
  • 按钮效果(转载)Button effect (reprint)
    <title>CodePen-ButtonHoverEffects</title><style>html{padding-top:50px;font-family:"OpenSans",Helvetica,arial,sans-serif;text-align:center;backgr......
  • input标签不同的type属性值:password、text、checkbox、button、radio
    input标签用于搜集用户信息根据不同的type属性值,输入字段拥有很多形式。输入字段可以是文本字段、复选框、掩码后的文本控件、单选按钮、按钮等等。type属性:button:定义可点击的按钮checkbox:定义复选框file:定义输入字段和“浏览”按钮hidden:定义隐藏的输入字段。image:定......
  • 【C++进阶】function和bind及可变模板参数
     文章目录1.function和bind1.1function使用方法1.2bind2.可变模板参数2.1可变模板参数函数2.2可变模板参数的展开 1.function和bindC++中的function和bind是为了更方便地进行函数对象的封装和调用而设计的。function是一个通用的函数对象容器......
  • Total Commander使用技巧(三)
    原文地址zhuanlan.zhihu.comTotalCommander是一款经典的当之无愧的文件管理神器快速高效的查找定位管理目录文件,告别原生杂乱低效的资源管理器下载地址(可以下载官方版本也可以下载网上修改版本)常用功能展示定制标签栏/书签栏标签栏:可以锁定一些常用目录到标......
  • Total Commander使用技巧(二)
    最近又读了几篇关于totalcommander的博文,学到了一些快捷键,下面记录一下(https://blog.csdn.net/xhm0924/article/details/130257779)操作复制文件F5:复制文件F6:移动文件F2/Shift+F6重命名文件Ctrl+M批量重命名新建Shift+F4:新建文本文件,调用记事本编辑(自定义编......