Python kivy.uix.behaviors.TouchRippleButtonBehavior';你的释放不起作用

Python kivy.uix.behaviors.TouchRippleButtonBehavior';你的释放不起作用,python,python-3.x,kivy,Python,Python 3.x,Kivy,我有一个继承自kivy.uix.behaviors.TouchRippleButtonBehavior的框布局,涟漪效果很好,但是,当我定义“按下”或“释放”时,函数永远不会运行。kivy.uix.behaviors.ButtonBehavior也是如此,这是为什么?我的代码片段: from kivy.app import App from kivy.uix.boxlayout import BoxLayout from kivy.uix.behaviors import TouchRipple

我有一个继承自kivy.uix.behaviors.TouchRippleButtonBehavior的框布局,涟漪效果很好,但是,当我定义“按下”或“释放”时,函数永远不会运行。kivy.uix.behaviors.ButtonBehavior也是如此,这是为什么?我的代码片段:

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.behaviors import TouchRippleButtonBehavior
from kivy.graphics import Color, Rectangle


class RippleBox(TouchRippleButtonBehavior, BoxLayout):
    def __init__(self, **kwargs):
        super(RippleBox, self).__init__(**kwargs)
        with self.canvas.before:
            Color(.5, .5, .5, 1, mode='rgba')
            self._rectangle = Rectangle(size=self.size, pos=self.pos)

    def on_release(self): # also tried passing '*args' as an argument, did not change anything
        print("got clicked!")

    def on_size(self, *args):
        self._rectangle.size = self.size
        self._rectangle.pos = self.pos

    def on_touch_down(self, touch):
        collide_point = self.collide_point(touch.x, touch.y)
        if collide_point:
            touch.grab(self)
            self.ripple_show(touch)
            return True
        return False

    def on_touch_up(self, touch):
        if touch.grab_current is self:
            touch.ungrab(self)
            self.ripple_fade()
            return True
        return False


class MainApp(App):
    def build(self):
        return RippleBox()


if __name__ == "__main__":
    MainApp().run()

当您定义任何
on\u touch\u down()
on\u touch\u up()
方法时,您超越了
on\u touch\u down()
on\u touch\u up()
方法中的
触摸按钮行为。
TouchRippleButtonBehavior
on\u touch\u()
方法调度
on\u release
事件,但如果从未调用该事件,则无法执行此操作。
TouchRippleButtonBehavior
方法还执行方法调用的
self.ripple\u show()
self.ripple\u fade()
。通常,当您重新定义这些方法时,应该调用
super()
,如下所示:

    super(RippleBox, self).on_touch_down(touch)