Для событий касания я знаю, что есть on_touch_down, который срабатывает, когда вы касаетесь экрана, on_touch_move, который срабатывает при изменении положения касания, и on_touch_up, который срабатывает при отпускании касания, но мне нужна функция для вызова, когда сенсорный режим активен, в том числе когда положение касания не изменяется. Например, с помощью кнопок я просто привязываю функцию к состоянию кнопки, поэтому, когда состояние кнопки «вниз», вызывается функция. Есть ли что-то подобное, что я могу сделать с событиями касания?Kivy: есть состояние касания, как состояние кнопки?
Пример использование button.state:
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from kivy.uix.floatlayout import FloatLayout
from kivy.properties import ObjectProperty
from kivy.lang import Builder
from kivy.clock import Clock
Builder.load_string("""
<ButtonR>
size:self.size
pos:self.pos
<RootWidget>
button1:button1
button2:button2
ButtonR:
id:button1
text:"press button to move"
size_hint:0.2,0.2
pos:0,0
ButtonR:
id:button2
text:"press screen and move"
size_hint:0.2,0.2
pos:0,200
""")
class ButtonR(Button):
def move(self):
self.center_x+=1
class RootWidget(FloatLayout):
button1=ObjectProperty(None)
button2=ObjectProperty(None)
def update(self,dt):
#Bottom button only moves if clicked on
if self.button1.state=="down":
self.button1.move()
def on_touch_move(self,touch):
#Top button moves only when touch event moves position
self.button2.move()
class MyApp(App):
def build(self):
app=RootWidget()
Clock.schedule_interval(app.update,1.0/60)
return app
if __name__=="__main__":
MyApp().run()