#python #function #button #kivy
#python #функция #кнопка #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 takes zero positional argument but one was given
.. Я использовал лямбда-выражение, подобное 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 используется каким-либо другим виджетом в классе something
Ответ №1:
Функция, которую вы передаете on_release
, будет иметь экземпляр, который будет выпущен, переданный в качестве первого (и единственного явного) аргумента.
Поэтому, если у вас есть функция, объявленная как def on_release_func(self,instance,something)
, как вы описываете, вы должны привязать ее как .bind(on_release=lambda instance: self.on_release_func(instance, your_parameter))
.
Комментарии:
1. Спасибо за твой быстрый ответ, брат, это сработало как шарм