Python Kivy Как изменить событие on_press в классе Button

Вот пример кода

from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout

class a(App):
    def build(self):
        self.btn = Button(on_press=self.press)

        return self.btn

    def press(self, instance, **kwargs):
        self.btn.bind(on_press=self.nothing)
        print(1)

    def nothing(self, *args, **kwargs):
        print(2)


a().run()

Мне нужно, чтобы при нажатии на кнопку, у нее событие on_press изменилось, или чтобы она просто ничего не делала, но у меня выходит, что она вызывает сразу 2 функции. Как это лечить или что я делаю не так?


Ответы (1 шт):

Автор решения: Karlson21

Если я вас правильно понял, то 'перебиндить' кнопку можно так:

class MyApp(App):
    def build(self):
        self.btn = Button(text="click")
        self.btn.bind(on_press=self.press)
        return self.btn

    def press(self, instance, **kwargs):
        self.btn.unbind(on_press=self.press)
        self.btn.bind(on_press=self.nothing)
        print('press')

    def nothing(self, *args, **kwargs):
        print('nothing')

MyApp().run()
→ Ссылка