Рассмотрим следующий код:
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
class First(BoxLayout):
def __init__(self, **kwargs):
super().__init__(**kwargs)
x = Button(text='somebutton')
x.bind(on_press=lambda*_: print('First press'))
x.bind(on_press=lambda*_: print('Second press'))
self.add_widget(x)
def something(self, *somethingishereignored):
print("I have something")
class FChooser(App):
def build(self):
return First()
if __name__ == '__main__':
FChooser().run()
Поведение этого кода заключается в том, что после нажатия кнопки somebutton он печатает:
Second press
First press
Итак, я погуглили обнаружил, что я должен использовать функцию unbind (), и я добавил это:
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
class First(BoxLayout):
def __init__(self, **kwargs):
super().__init__(**kwargs)
x = Button(text='somebutton')
x.bind(on_press=lambda*_: print('First press'))
x.unbind(on_press=lambda*_: print('First press'))
x.bind(on_press=lambda*_: print('Second press'))
self.add_widget(x)
def something(self, *somethingishereignored):
print("I have something")
class FChooser(App):
def build(self):
return First()
if __name__ == '__main__':
FChooser().run()
, но вывод не меняется.Это все тот же вывод.Как мне снять привязку?Это лишь минимальный пример, и я намерен использовать эту функцию для динамического связывания и открепления функции с кнопкой, чтобы добавить различные функции к одной и той же кнопке.