Python kivy ToggleButton:如何触发状态更改的方法?

Python kivy ToggleButton:如何触发状态更改的方法?,python,kivy,Python,Kivy,这是我的实际代码。它做我想做的,除了当我用脚本更改状态时,它不提供信息。它仅在通过用户交互进行更改时提供信息 from kivymd.app import MDApp from kivy.lang import Builder KV = ''' BoxLayout: ToggleButton: id: toggle_button text: "click on me" ''' class ExampleApp(MDApp):

这是我的实际代码。它做我想做的,除了当我用脚本更改
状态时,它不提供信息。它仅在通过用户交互进行更改时提供信息

from kivymd.app import MDApp
from kivy.lang import Builder

KV = '''
BoxLayout:
    ToggleButton:
        id: toggle_button
        text: "click on me"
'''

class ExampleApp(MDApp):
    loading_layout = None

    def build(self):
        screen = Builder.load_string(KV)
        screen.ids["toggle_button"].bind(on_press=lambda instance: self.on_click(instance))

        print("I change the state and I want to be aware")
        screen.ids["toggle_button"].state = "down"
        print("on_click method isn't enough :(")

        return screen

    def on_click(self, instance):
        print("State changed !", instance.state)

ExampleApp().run()

问题:我如何将函数链接到
状态
更改,而不仅仅是在
上单击

您可以做的是利用
切换按钮
类的
状态
方法。以下是一个例子:

from kivymd.app import MDApp
from kivy.lang import Builder
from kivy.uix.togglebutton import ToggleButton

KV = '''
BoxLayout:
    CustomToggle:
        id: toggle_button
        text: "click on me"
'''


class CustomToggle(ToggleButton):

    def on_state(self, *args):
        print('State changed!', self.state)

    def on_press(self):
        print("Button pressed!", self.state)


class ExampleApp(MDApp):
    loading_layout = None

    def build(self):
        screen = Builder.load_string(KV)
        screen.ids["toggle_button"].state = "down"
        return screen


ExampleApp().run()

状态上的
on
方法自动绑定到
state
属性,因此每当更改
state
时,就会调用该函数。

My bad,我没有查看好的url。我只是看了这个:但是信息就在这个上面:谢谢你的回答,这就是我想要的(简单而合乎逻辑,因为我们都喜欢!)我仍然有一个问题。您的示例很好,但我无法在绑定<代码>屏幕时绑定<代码>状态
,因此,您必须绑定属性,而不是函数(如果有意义的话)。看看这个,看看我的意思完美!我正好有我需要的,谢谢!如果我理解的话,这就像是在按下按钮时的
和释放按钮时的
被创建为绑定在状态下的
不应该被覆盖的地方?