目录
输入记录器¶
在 1.1.0 版本加入.
警告
Kivy 的这一部分仍处于实验阶段,此 API 在未来的版本中可能会有所更改。
这是一个能够记录并重放某些输入事件的类。它可用于测试用例、屏幕保护程序等场景。
一旦激活,记录器将监听任何输入事件,并将其属性连同时间差保存到文件中。之后,您可以播放该输入文件:它将根据保存的属性生成模拟触摸事件,并将其分发到事件循环中。
默认情况下,仅保存位置('pos' 配置文件和 'sx'、'sy' 属性)。除非你理解输入处理的工作原理,否则不要更改此设置。
记录事件¶
最佳方式是使用“recorder”模块。请查阅 模块 文档,了解如何激活该模块。
激活后,您可以按F8开始录制。默认情况下,事件将写入`<当前路径>/recorder.kvi`。当您想要停止录制时,再次按F8即可。
你可以按 F7 键重播该文件。
请参阅 录音机模块 模块以获取更多信息。
手动播放¶
您可以手动打开一个录制文件,并通过以下方式播放它::
from kivy.input.recorder import Recorder
rec = Recorder(filename='myrecorder.kvi')
rec.play = True
如果你想遍历那个文件,可以这样做:
from kivy.input.recorder import Recorder
def recorder_loop(instance, value):
if value is False:
instance.play = True
rec = Recorder(filename='myrecorder.kvi')
rec.bind(play=recorder_loop)
rec.play = True
记录更多属性¶
你可以扩展要保存的属性,但有一个条件:属性值必须是简单值,不能是复杂类的实例。
假设你想保存触摸的角度和压力(如果可用的话):
from kivy.input.recorder import Recorder
rec = Recorder(filename='myrecorder.kvi',
record_attrs=['is_touch', 'sx', 'sy', 'angle', 'pressure'],
record_profile_mask=['pos', 'angle', 'pressure'])
rec.record = True
或者使用模块变量::
$ python main.py -m recorder,attrs=is_touch:sx:sy:angle:pressure, profile_mask=pos:angle:pressure
已知限制¶
无法保存带有复杂类实例的属性。
表示时间的值将不会被调整。
只能重放完整的记录。如果缺少开始/更新/结束事件,可能会导致幽灵触摸。
提前结束回放可能导致“幽灵触摸”现象。
- class kivy.input.recorder.Recorder(**kwargs)[源代码]¶
-
Recorder 类。请查看模块文档以获取更多信息。
- 事件:
- on_stop:
当播放停止时触发。
在 1.10.0 版本发生变更: 添加了 on_stop 事件。
- counter¶
上次会话中记录的事件数量。
counter是一个NumericProperty,默认值为 0,且为只读属性。
- filename¶
用于保存记录器输出的文件名。
filename是一个StringProperty,默认值为 'recorder.kvi'。
- play¶
用于启动/停止当前文件(如果存在)回放的布尔值。
play是一个BooleanProperty,默认值为 False。
- record¶
布尔值,用于开始/停止输入事件的记录。
record是一个BooleanProperty,默认值为 False。
- record_attrs¶
要从运动事件中记录的属性。
record_attrs是一个ListProperty,默认值为 ['is_touch', 'sx', 'sy']。
- record_profile_mask¶
回放时在模拟运动事件中保存的配置文件。
record_profile_mask是一个ListProperty,默认值为 ['pos']。
- window¶
附加录音器的窗口实例。若为None,则使用默认实例。
window是一个ObjectProperty,默认值为 None。