#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
событию. скорее, чем сам метод.