- 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 - 花园
- Kivy - 存储
- Kivy - 矢量
- Kivy - 工具
- Kivy - 检查器
- Kivy - 工具
- Kivy - 日志记录器
- Kivy - 帧缓冲区
- Kivy 应用和项目
- Kivy - 绘图应用
- Kivy - 计算器应用
- Kivy - 计时器应用
- Kivy - 相机处理
- Kivy - 图片查看器
- Kivy - 贝塞尔曲线
- Kivy - 画布压力测试
- Kivy - 圆形绘制
- Kivy - 组件动画
- Kivy - 其他
- Kivy 有用资源
- Kivy - 快速指南
- Kivy - 有用资源
- Kivy - 讨论
Kivy - 输入记录器
Kivy 框架中 Recorder 类的功能仍在开发中,目前处于实验阶段。Recorder 对象记录输入事件,例如触摸事件、键盘事件和点击事件。这些事件被记录到扩展名为“.kvi”的文件中。Kivy 使用此文件并通过生成等效的伪事件并将其分派到事件循环来重放这些事件。
Recorder 类定义在“kivy.input.recorder”模块中 -
from kivy.input.recorder import Recorder rec = Recorder(**kwargs)
要开始录制,在实例化 Recorder 对象后按下 F8。事件数据将记录到当前文件夹中的“recorder.kvi”文件中。您可以为 file 属性指定任何其他文件名。
rec = Recorder(filename='myrecorder.kvi')
按下 F7 重放事件。
要手动控制录制和重放,请使用 Recorder 对象的 record 和 play 属性。
要开始录制 -
rec = Recorder(filename='myrecorder.kvi') rec.record = True rec.start()
要停止录制 -
rec.record = False rec.stop()
类似地,要开始重放 -
rec.play = True rec.start()
并且,要停止播放 -
rec.play = False rec.stop()
您可以使重放循环播放 -
def playloop(instance, value):
if value is False:
instance.play = True
rec = Recorder(filename='myrecorder.kvi')
rec.bind(play=playloop)
rec.play = True
示例
在下面给出的代码中,一个 Label 被添加到一个 Scatter 组件中,以便您可以执行旋转、缩放和变换。此外,当用户更改 TextInput 框的内容时,标签的 text 属性也会更新。
事件的录制和重放定义在两个按钮的 on_press 事件上。
以下是完整的代码 -
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.scatter import Scatter
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.textinput import TextInput
from kivy.uix.togglebutton import ToggleButton
from kivy.input.recorder import Recorder
from kivy.core.window import Window
Window.size = (720,400)
class scatterdemoapp(App):
def build(self):
self.rec = Recorder(filename='myrecorder.kvi')
box=BoxLayout(orientation='vertical')
box1=BoxLayout(orientation='horizontal')
text1=TextInput(text='Hi', pos_hint={'top':1},height=100, size_hint=(.5, None))
b1=ToggleButton(text='record',pos_hint={'top':1}, height=100, size_hint=(.25, None))
b1.bind(on_press=self.on_recording)
b2=ToggleButton(text='play', pos_hint={'top':1},height=100, size_hint=(.25, None))
b2.bind(on_press=self.on_playing)
box1.add_widget(text1)
box1.add_widget(b1)
box1.add_widget(b2)
box.add_widget(box1)
scatr=Scatter()
self.lbl=Label(text="Hi", font_size=60, pos=(Window.width/2-100,200 ))
text1.bind(text=self.lbl.setter('text'))
scatr.add_widget(self.lbl)
box.add_widget(scatr)
return box
def on_recording(self, obj):
if obj.state=='down':
self.rec.record=True
self.rec.start()
else:
self.rec.record=False
self.rec.stop()
def on_playing(self, obj):
if obj.state=='down':
self.rec.play=True
self.rec.start()
else:
self.rec.play=False
self.rec.stop()
scatterdemoapp().run()
输出
应用程序窗口如下所示 -
点击录制按钮,所有屏幕活动(包括 key_down 事件)都将记录到“.kvi”文件中。控制台窗口显示已记录输入。
[INFO ] [Recorder ] Recording inputs to 'myrecorder.kvi' [INFO ] [Recorder ] Recorded 901 events in 'myrecorder.kvi'
按下播放按钮以重放已记录的事件。相应地,控制台会回显相应的日志。
[INFO ] [Recorder ] Start playing 901 events from 'myrecorder.kvi'
广告