如何将参数传递给 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 按钮的绑定函数的主要内容,如果未能解决你的问题,请参考以下文章
将当前单击的按钮作为参数传递给 Kivy (Python) 中的 on_press