事件

Kivy 主要是基于事件的,这意味着程序的流程由事件决定。

时钟事件

时钟对象(clock object)允许你使用schedule_once()方法在未来安排一次性事件的函数调用,或使用schedule_interval()方法安排重复事件的函数调用。

您还可以使用 create_trigger()方法创建触发事件。触发器的优点是每帧只调用一次,即使您为相同的回调安排了多个触发器。

输入事件

所有鼠标单击、触摸和滚轮事件都是MotionEvent的一部分,通过输入后处理(Input Postprocessing)扩展,并通过Window类中的on_motion事件调度。然后此事件在小部件Widget中生成 on_touch_down(), on_touch_move()on_touch_up()事件。

如果要深入理解,请查看输入管理。

类事件(class events)

我们的基类EventDispatcherWidget调用,根据我们的属性(Properties)更改。这意味着当一个Widget改变它的位置或大小时,相应的事件会自动触发。

此外,你可以使用register_event_type()方法创建自己的事件,就像Button小部件中的on_presson_release事件一样。

另一个需要注意的是,如果你重写一个事件,你就需要负责实现基类之前处理的所有行为。最简单的方法是调用super()

def on_touch_down(self, touch):
    if super().on_touch_down(touch):
        return True
    if not self.collide_point(touch.x, touch.y):
        return False
    print('you touched me!')
    return True

通过阅读事件和属性文档来熟悉事件。

Last updated