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



实际上,我正试图将一个参数添加到我的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函数,但当我单击按钮时,它再次出现错误lambda takes zero positional argument but one was given。。我使用了类似于MDRectangleFlatButton.bind(on_release = lambda : self.on_release_func(my_parameter))的lambda

知道我如何解决问题吗

示例代码

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被类中的其他小部件使用

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

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

最新更新