我找到了条件按钮的代码,但我不明白 on_number(self, obj, value) 代码

I found this code for conditional buttons but I don't understand the on_number(self, obj, value) code

我对 kivy 很陌生。于是网上找了这段代码,on_number的部分看不懂。我知道如果我删除它,数字会更新但它不会重复创建小部件的过程。有人可以解释一下 on_number 的函数是如何工作的以及这三个变量指的是什么吗?

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import NumericProperty
from kivy.lang import Builder

Builder.load_string('''
<SubWidget1>:
    Label:
        text: 'number is bigger than 3'
    Button:
        text: 'click here to decrease'
        on_press: root.parent.number -= 1

<SubWidget2>:
    Label:
        text: 'number is smaller than 3'
    Button:
        text: 'click here to increase'
        on_press: root.parent.number += 1

<MyWidget>
    number: 0
''')

class SubWidget1(BoxLayout):
    pass

class SubWidget2(BoxLayout):
    pass

class MyWidget(BoxLayout):
    number = NumericProperty()

    def __init__(self, *args):
        super(MyWidget, self).__init__(*args)
        self.widget = None
        self._create_widget()

    def _create_widget(self):
        print(self.number)
        if self.widget is not None:
            self.remove_widget(self.widget)
        if self.number > 3:
            self.widget = SubWidget1()
        else:
            self.widget = SubWidget2()
        self.add_widget(self.widget)

    def on_number(self, obj, value):
        self._create_widget()

class MyApp(App):
    def build(self):
        return MyWidget()

if __name__ == '__main__':
    MyApp().run()

所有 Kivy 属性在更改时都会根据 属性 名称自动调用其 class 的方法。此方法是 on_propertyname,并传递两个参数:属性 刚刚更改的对象,以及 属性.

的新值