如何将参数传递给 kivy 按钮的绑定函数

Posted

技术标签:

【中文标题】如何将参数传递给 kivy 按钮的绑定函数【英文标题】:How can you pass parameters to kivy button's bind functions 【发布时间】:2021-02-14 11:31:10 【问题描述】:

实际上,我试图在我的 kivy 按钮的绑定方法中添加一个参数,就像 def on_release_func(self,instance,something) 一样,其中某些内容指的是任何参数。现在在按钮的绑定函数中 MDRectangleFlatButton.bind(on_release = self.on_release_func(my_parameter)) 给了我on_release_func() missing one required positional argument 'something' 的错误。我尝试使用 lambda 函数,但是当我单击 Button 时,它再次出现错误 lambda takes zero positional argument but one was given .. 我使用 lambda 像 MDRectangleFlatButton.bind(on_release = lambda : self.on_release_func(my_parameter))

知道如何解决我的问题

示例代码

class Myapplin(MDApp):

    def any_function(self):
        self.card_imgs_box = BoxLayout()
        self.img_disp_btn = MDFillRoundFlatButton(text='Img 1')

        id_btn = int(self.img_disp_btn.text[-1]) - 1

        self.img_disp_btn.bind(on_release=lambda: self.display_btn_img(id_btn))
        self.card_imgs_box.add_widget(self.img_disp_btn)


    def display_btn_img(self,instance,id):
        return id*id
    def build(self):
        return something()

Myapplin().run()

这里的函数在 MDApp 类中。这个函数 any_function 被某个类中的其他小部件使用

【问题讨论】:

【参考方案1】:

您传递给on_release 的函数会将被释放的实例作为其第一个(也是唯一显式的)参数传递。

因此,如果您有一个声明为 def on_release_func(self,instance,something) 的函数,如您所描述的,则应将其绑定为 .bind(on_release=lambda instance: self.on_release_func(instance, your_parameter))

【讨论】:

感谢您的快速回复兄弟它起到了魅力

以上是关于如何将参数传递给 kivy 按钮的绑定函数的主要内容,如果未能解决你的问题,请参考以下文章

如何通过单击 PyQt 中的按钮将参数传递给函数?

将当前单击的按钮作为参数传递给 Kivy (Python) 中的 on_press

如何使用 SwiftUI 将参数传递给 Button 的操作

jQuery UI 问题。如何将参数传递给函数

将参数传递给选择器

如何将参数传递给数据绑定中的函数?