手势表面¶
在 1.9.0 版本加入.
警告
此功能目前处于实验阶段,只要此警告提示存在,其内容可能会发生变化。
完整的应用示例请参阅 kivy/examples/demo/multistroke/main.py。
- class kivy.uix.gesturesurface.GestureContainer(touch, **kwargs)[源代码]¶
-
存储手势信息的容器对象。它拥有多个属性,这些属性会随着绘制的进行由`GestureSurface`更新。
- 参数:
- touch
用于初始化手势容器的触摸对象(由on_touch_down接收)。必填。
- 属性:
- active
一旦手势完成(达到 max_stroke 设置或 GestureSurface.temporal_window),则将其设为 False。
active是一个BooleanProperty。- active_strokes
当前手势中活跃的笔画数,即与此手势关联的并发触摸数。
active_strokes是一个NumericProperty。- max_strokes
手势中允许的最大笔画数。此值由`GestureSurface.max_strokes`设置,但可在例如`on_gesture_start`中覆盖。
max_strokes是一个NumericProperty。- was_merged
表示该手势已与另一个手势合并,应视为已丢弃。
was_merged是一个BooleanProperty- bbox
包含键 minx、miny、maxx、maxy 的字典,表示手势边界框的大小。
bbox是一个DictProperty。- width
表示手势的宽度。
width是一个NumericProperty。- height
表示手势的高度。
height是一个NumericProperty。
- class kivy.uix.gesturesurface.GestureSurface(**kwargs)[源代码]¶
基类:
FloatLayout简单的触摸表面,用于跟踪/绘制触摸移动。通常用于收集适合
kivy.multistroke.Recognizer的用户输入。- 属性:
- temporal_window
从最后一次 touch_up 事件到尝试识别手势的等待时间。如果将此值设为 0,则除非满足
max_strokes条件,否则不会触发 on_gesture_complete 事件。temporal_window是一个NumericProperty,默认值为 2.0。- max_strokes
单次手势中允许的最大笔画数;达到此数值后,将在最终的 touch_up 事件发生时立即开始识别。如果此值设置为 0,则除非
temporal_window超时,否则不会触发 on_gesture_complete 事件。max_strokes是一个NumericProperty,默认值为 2.0。- bbox_margin
用于检测手势碰撞的边界框边距,单位为像素。
bbox_margin是一个NumericProperty,默认值为 30。- draw_timeout
在 on_gesture_complete 事件触发后,线条/边界框在画布上保留的秒数。如果设置为 0,则手势完成后会立即从表面移除。
draw_timeout是一个NumericProperty,默认值为 3.0。- color
用于绘制手势的颜色,采用RGB格式。如果
use_random_color为 True,则此选项不生效。color是一个ColorProperty,默认值为 [1, 1, 1, 1](白色)。在 2.0.0 版本发生变更: 从
ListProperty更改为ColorProperty。- use_random_color
设为True时,将为每个手势随机选择颜色,若如此设置,则`color`属性将被忽略。默认值为False。
use_random_color是一个BooleanProperty,默认值为 False。- line_width
用于在表面上追踪触摸的线条宽度。如果只想检测手势而不绘制任何内容,请设置为0。若使用1.0,则通过OpenGL的GL_LINE进行绘制;大于1的值将使用基于三角形的内部绘制方法(效率较低),参见
kivy.graphics。line_width是一个NumericProperty,默认值为 2。- draw_bbox
设置为True,如果你想在手势后面绘制边界框。这仅在`line_width` >= 1时有效。默认值为False。
draw_bbox是一个BooleanProperty,默认值为 True。- bbox_alpha
如果 draw_bbox 为 True,则边界框的不透明度。默认值为 0.1。
bbox_alpha是一个NumericProperty,默认值为 0.1。
- 事件:
- on_gesture_start
GestureContainer 当在表面上开始一个新手势时触发,即第一次on_touch_down事件不与表面上已有的手势发生碰撞时。
- on_gesture_extend
GestureContainer 当在手势进行中发生 touch_down 事件时触发。
- on_gesture_merge
GestureContainer,GestureContainer 当两个手势发生碰撞并合并为一个手势时触发。第一个参数是被合并的手势(不再有效);第二个参数是合并后的(结果)手势。
- on_gesture_complete
GestureContainer 当一组笔画被视为一个完整手势时触发,这发生在 temporal_window 过期或达到 max_strokes 时。通常你会绑定此事件,并使用提供的 GestureContainer 的 get_vectors() 方法,与你的手势数据库进行匹配。
- on_gesture_cleanup
GestureContainer 在`on_gesture_complete`触发后`draw_timeout`秒,手势将从画布中移除(如果`line_width > 0`或`draw_bbox`为True),并且在此之前从内部手势列表中移除。
- on_gesture_discard
GestureContainer 当手势未达到识别所需的最小尺寸要求(宽度/高度小于5,或仅包含单点笔画)时触发。
- on_gesture_start
- on_touch_up(touch)[源代码]¶
接收触摸抬起事件。触摸坐标位于父级坐标系中。
更多信息请参阅
on_touch_down()。