我想让类myField()中的函数on_touch_down()只在点击图片时被调用,而不是在整个屏幕上。要实现这个目标,我需要改变什么?
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.image import Image
class MyField(Image):
def __init__(self, **kwargs):
super(MyField, self).__init__(**kwargs)
self.source = "image1.jpg"
self.size_hint = 0.1,0.1
def on_touch_down(self, touch):
print("touch down")
class MyLayout(FloatLayout):
def __init__(self, **kwargs):
super(MyLayout, self).__init__(**kwargs)
self.add_widget(MyField())
class MyApp(App):
def build(self):
return MyLayout()
if __name__ == "__main__":
MyApp().run()
的 on_touch_down
方法属于Kivy的 Widget
而你不应该阻止它的执行。但你可以做的是修改你自己的版本,以满足你的需求,像这样。
def on_touch_down(self, touch):
if self.collide_point(*touch.pos):
print("touch down")
有了这个,你只打印一些东西 如果点击是在你的图像的边界内。