Как я могу изменить функциональность on_release кнопки KivyMD с помощью кода Python в KivyMD?

#python #kivy #kivymd

Вопрос:

Как мы можем изменить on_release функцию кнопки KivyMD с помощью кода Python? Изначально я добавил инструкцию печати к кнопке KivyMD и изменил on_release функцию кнопки KivyMD с помощью кода Python, но проблема в том, что она присоединяет мою новую функцию к кнопке вместо замены ее предыдущей функции. Это означает, что он также выполняет предыдущую функцию, назначенную кнопке, но я хочу полностью изменить функцию, например, заменить ее новой функцией с использованием кода Python.

Вот мой код на Python

 self.root.ids.btn.on_release = self.new_function
 

Заранее спасибо 🙂

Ответ №1:

Если ваша начальная on_release функция установлена kv , то я не думаю, что вы можете удалить или заменить ее. Я считаю, что исправление состоит в том, чтобы расширить Button класс и определить начальную on_release функцию в его __init__() методе. Подобный этому:

 class MyButt(Button):
    def __init__(self, **kwargs):
        self.on_release = partial(print, 'hi')
        return super(MyButt, self).__init__(**kwargs)
 

Затем замените это Button в вашем kv с MyButt и удалите on_release: строку из kv .

Комментарии:

1. Я исправил глупую ошибку, которая была в моем первоначальном ответе. Вы не можете этого сделать self.on_release = print('hi') , потому что это попытка присвоить возвращаемое значение print() on_release событию. скорее, чем сам метод.