Python 为什么该功能会在整个布局上触发,而不仅仅在图像上触发?

Python 为什么该功能会在整个布局上触发,而不仅仅在图像上触发?,python,kivy,touch,Python,Kivy,Touch,我希望仅通过单击图像而不是在整个屏幕上调用myField类中的函数。要实现这一目标,我必须改变什么 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__(

我希望仅通过单击图像而不是在整个屏幕上调用myField类中的函数。要实现这一目标,我必须改变什么

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的小部件,您不应该阻止它的执行。 但是,您可以做的是修改您自己的版本,以满足您的需要,例如:

def on_touch_downself,touch: 如果self.collide_point*touch.pos: 打印触地 这样,只有在单击位于图像边界内时,才能打印某些内容