目标:当我单击然后释放对开关小部件的单击时,它将向我触发释放事件。
问题:我使用了on_touch_down()切换方法,但是:
from kivymd.app import MDApp
from kivy.lang import Builder
from kivy.uix.gridlayout import GridLayout
KV = '''
MyGridLayout:
Switch:
id: switch_ecs
on_touch_up:
root.on_switch("ecs")
'''
class MyGridLayout(GridLayout):
def __init__(self, **kwargs):
super().__init__(**kwargs)
def on_switch(self,element_id):
print(self.ids["switch_" + element_id].active)
class MyApp(MDApp):
def build(self):
self.screen = Builder.load_string(KV)
return self.screen
if __name__ == '__main__':
MyApp().run()
Kivy的逻辑晦涩难懂,导致润饰事件被两次分派给某些小部件(如Buttons
和Switches
)。您的代码的解决方法是为您的on_switch()
方法使用其他触发器。您可以使用:
on_touch_down:
root.on_switch("ecs")
要么:
on_active:
root.on_switch("ecs")
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句