- Kivy 教程
- Kivy - 首页
- Kivy 基础
- Kivy - 开始入门
- Kivy - 安装
- Kivy - 架构
- Kivy - 文件语法
- Kivy - 应用
- Kivy - Hello World
- Kivy - 应用生命周期
- Kivy - 事件
- Kivy - 属性
- Kivy - 输入
- Kivy - 行为
- Kivy 按钮
- Kivy - 按钮
- Kivy - 按钮事件
- Kivy - 按钮颜色
- Kivy - 按钮大小
- Kivy - 按钮位置
- Kivy - 圆形按钮
- Kivy - 禁用按钮
- Kivy - 图片按钮
- Kivy 组件
- Kivy - 组件
- Kivy - 标签
- Kivy - 文本输入
- Kivy - 画布
- Kivy - 直线
- Kivy - 复选框
- Kivy - 下拉列表
- Kivy - 窗口
- Kivy - 滚动视图
- Kivy - 旋转木马
- Kivy - 滑块
- Kivy - 图片
- Kivy - 弹出窗口
- Kivy - 开关
- Kivy - 微调器
- Kivy - 分隔器
- Kivy - 进度条
- Kivy - 气泡
- Kivy - 标签页面板
- Kivy - 散点图
- Kivy - 手风琴
- Kivy - 文件选择器
- Kivy - 颜色选择器
- Kivy - 代码输入
- Kivy - 模态视图
- Kivy - 开关按钮
- Kivy - 相机
- Kivy - 树视图
- Kivy - reStructuredText
- Kivy - 操作栏
- Kivy - 播放器
- Kivy - 模板视图
- Kivy - 虚拟键盘
- Kivy - 触摸涟漪
- Kivy - 音频
- Kivy - 视频
- Kivy - 拼写检查
- Kivy - 效果
- Kivy - 输入记录器
- Kivy - OpenGL
- Kivy - 文本
- Kivy - 文本标记
- Kivy - 设置
- Kivy 布局
- Kivy - 布局
- Kivy - 浮动布局
- Kivy - 网格布局
- Kivy - 箱式布局
- Kivy - 堆叠布局
- Kivy - 锚点布局
- Kivy - 相对布局
- Kivy - 分页布局
- Kivy - 回收布局
- Kivy - 布局嵌套
- Kivy 高级概念
- Kivy - 配置对象
- Kivy - 图集
- Kivy - 数据加载器
- Kivy - 缓存管理器
- Kivy - 控制台
- Kivy - 动画
- Kivy - 多笔画手势
- Kivy - 时钟
- Kivy - SVG
- Kivy - UrlRequest
- Kivy - 剪贴板
- Kivy - 工厂
- Kivy - 手势
- Kivy - 语言
- Kivy - 图形
- Kivy - 绘图
- Kivy - 打包
- Kivy - Garden
- Kivy - 存储
- Kivy - 矢量
- Kivy - 工具函数
- Kivy - 检查器
- Kivy - 工具
- Kivy - 日志记录器
- Kivy - 帧缓冲区
- Kivy 应用和项目
- Kivy - 绘图应用
- Kivy - 计算器应用
- Kivy - 计时器应用
- Kivy - 相机处理
- Kivy - 图片查看器
- Kivy - 贝塞尔曲线
- Kivy - 画布压力测试
- Kivy - 圆形绘制
- Kivy - 组件动画
- Kivy - 其他
- Kivy 有用资源
- Kivy - 快速指南
- Kivy - 有用资源
- Kivy - 讨论
Kivy - 多笔画手势
在 Kivy 中,多笔画手势是由多个手势对象组成的集合。一个手势包含单个笔画,该笔画由“touch_down”和“touch_up”事件之间的触摸点列表构成。多笔画手势是此类笔画的集合。
“kivy.multistroke”模块实现了量角器手势识别算法。此模块中定义的两个重要类是MultistrokeGesture和Recognizer。
MultiStrokeGesture 类维护一组笔画,并生成单笔画(即 UnistrokeTemplate)排列,这些排列稍后用于评估针对此手势的候选对象。
可以使用以下语法获得 MultriStroke 对象:
from kivy.vector import Vector from kivy.multistroke import MultistrokeGesture gesture = MultistrokeGesture('my_gesture', strokes=[ [Vector(x1, y1), Vector(x2, y2), ...... ], # stroke 1 [Vector(), Vector(), Vector(), Vector() ] # stroke 2 #, [stroke 3], [stroke 4], ... ])
即使所有笔画都组合到单个列表(单笔画)中,您仍然应该单独指定笔画,并将 stroke_sensitive 属性设置为 True。
Recognizer 存储 MultistrokeGesture 对象列表。它类似于 GestureDatabase 的搜索/数据库 API。它维护一个列表,并允许您在其间搜索用户输入的手势。
Recognizer 数据库是 UnistrokeTemplate 对象的容器,并实现堆排列算法以自动生成所有可能的笔画顺序。
Candidate 类的对象表示用户输入的一组单笔画路径。调用 Recognizer.recognize() 时会自动实例化此对象。
from kivy.vector import Vector from kivy.multistroke import Recognizer gdb = Recognizer() gdb.recognize([ [Vector(x1, y1), Vector(x2, y2)], [Vector(x3, y3), Vector(x4, y4)]])
Recognizer 对象能够生成以下事件:
on_search_start - 使用此 Recognizer 启动新搜索时触发。
on_search_complete - 运行中的搜索结束时触发,无论出于何种原因。
这些事件可以映射到回调函数,以跟踪 Recognizer.recognize() 方法执行的搜索操作的进度。
gdb.bind(on_search_start=search_start) gdb.bind(on_search_complete=search_stop)
回调方法示例如下:
def search_start(gdb, pt): print("A search is starting with {} tasks".format(pt.tasks)) def search_stop(gdb, pt): best = pt.best print("Search ended {}. Best is {} (score {}, distance {})".format( pt.status, best['name'], best['score'], best['dist'] ))
最后,“kivy.multistroke”模块还提供了一个 ProgressTracker 类。它表示正在进行(或已完成)的搜索操作。
调用 Recognizer.recognize() 方法时,会自动实例化跟踪器对象并将其返回。results 属性是一个字典,会在识别操作进行时更新。
progress = gdb.recognize([ [Vector(x1, y1), Vector(x2, y2)], [Vector(x3, y3), Vector(x4, y4)]]) progress.bind(on_progress=my_other_callback) print(progress.progress) # = 0 print(result.progress) # = 1
您可以使用 export_gesture() 函数将多笔画手势保存到文件中。
export_gesture(filename=None) - 它将 MultistrokeGesture 对象列表导出到 base64 编码的字符串,该字符串可以使用 parse_gesture() 函数解码为 Python 列表。它也可以使用 Recognizer.import_gesture() 直接导入到数据库中。如果指定了 filename,则输出将写入磁盘。
import_gesture(data=None,filename=None) - import_gesture() 函数将手势引入 Recognizer 数据库。使用此函数导入 export_gesture() 格式化的列表手势。必须指定 data 或 filename 参数。此方法接受可选的 Recognizer.filter() 参数,如果没有指定参数,则导入指定数据中的所有手势。