目录
事件¶
Kivy 主要是基于事件的(参见 <https://en.wikipedia.org/wiki/Event-driven_programming>),这意味着程序的流程由事件决定。
时钟事件
: 时钟对象 允许您通过 schedule_once() 将函数调用安排为一次性事件,或通过 schedule_interval() 将其安排为重复事件。
你也可以使用 create_trigger() 创建触发事件。触发器的优势在于,即使你为同一个回调函数安排了多个触发,它每帧也只会被调用一次。
输入事件
所有的鼠标点击、触摸和滚轮事件都属于 MotionEvent 的一部分,由 输入后处理 扩展,并通过 Window 类中的 on_motion 事件进行分发。该事件随后在 Widget 中生成 on_touch_down()、on_touch_move() 和 on_touch_up() 事件。
如需深入了解,请参阅:doc:/api-kivy.input。
类事件
我们的基类 EventDispatcher,被 Widget 所使用,利用了我们 属性 的强大功能来分发变更。这意味着当一个小部件改变其位置或大小时,相应的事件会自动触发。
此外,您还可以通过使用 register_event_type() 来创建自己的事件,正如 Button 控件中的 on_press 和 on_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
通过阅读 事件与属性 文档,进一步熟悉事件。