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