kivy教程翻译
  • 概述
  • 欢迎来到kivy
  • 入门
    • 简介
    • kivy安装
    • 第一个应用程序
    • 属性
    • kv设计语言
    • 事件
    • 非小部件对象
    • 布局
    • 绘图
    • 打包
    • 深入
  • 编程指南
    • Kivy 基础
    • 控制环境
    • 配置 Kivy
    • 架构概述
    • 事件和属性
    • 输入管理
    • 小部件
    • 图形
    • Kv 语言
    • 与其他框架集成
    • 打包应用程序
    • 包许可
  • 教程
    • 乒乓球游戏教程
    • 画图应用程序
    • 速成课程
Powered by GitBook
On this page
  1. 入门

事件

Previouskv设计语言Next非小部件对象

Last updated 2 years ago

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)

我们的基类EventDispatcher由Widget调用,根据我们的属性(Properties)更改。这意味着当一个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

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

基于事件的
../_images/gs-events-input.png
../_images/gs-events-clock.png
../_images/gs-events-class.png