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