目录
- 输入管理
MotionEventMotionEvent.apply_transform_2d()MotionEvent.buttonMotionEvent.copy_to()MotionEvent.depack()MotionEvent.deviceMotionEvent.dispatch_done()MotionEvent.dispatch_modeMotionEvent.distance()MotionEvent.double_tap_timeMotionEvent.dposMotionEvent.dsxMotionEvent.dsyMotionEvent.dszMotionEvent.dxMotionEvent.dyMotionEvent.dzMotionEvent.grab()MotionEvent.grab_currentMotionEvent.idMotionEvent.is_double_tapMotionEvent.is_mouse_scrollingMotionEvent.is_touchMotionEvent.is_triple_tapMotionEvent.move()MotionEvent.oposMotionEvent.osxMotionEvent.osyMotionEvent.oszMotionEvent.oxMotionEvent.oyMotionEvent.ozMotionEvent.pop()MotionEvent.posMotionEvent.pposMotionEvent.profileMotionEvent.psxMotionEvent.psyMotionEvent.pszMotionEvent.push()MotionEvent.push_attrs_stackMotionEvent.pxMotionEvent.pyMotionEvent.pzMotionEvent.scale_for_screen()MotionEvent.shapeMotionEvent.sposMotionEvent.sxMotionEvent.syMotionEvent.sync_with_dispatchMotionEvent.szMotionEvent.time_endMotionEvent.time_startMotionEvent.time_updateMotionEvent.to_absolute_pos()MotionEvent.triple_tap_timeMotionEvent.type_idMotionEvent.udMotionEvent.uidMotionEvent.ungrab()MotionEvent.xMotionEvent.yMotionEvent.z
MotionEventFactoryMotionEventProvider
输入管理¶
我们的输入系统既广泛又简洁。目前,我们能够原生支持:
Windows 多点触控事件(手写笔和手指)
OS X 触控板
Linux 多点触控事件(内核与 mtdev)
Linux Wacom 驱动(手写笔和手指)
TUIO
所有输入管理均可在Kivy的:mod:`~kivy.config`中进行配置。您可以在一个Kivy应用程序中轻松使用多种多点触控设备。
当从设备读取事件后,它们会经过一个后处理模块进行分发,然后才发送到您的应用程序。我们还提供了几个默认模块,用于:
双击检测
减少抖动
降低在“劣质”DIY硬件上触摸的不准确性
忽略区域
- class kivy.input.MotionEvent(device, id, args, is_touch=False, type_id=None)[源代码]¶
基类:
MotionEvent表示输入事件的抽象类。
- 参数:
- id:字符串
MotionEvent 的唯一标识符。
- args:列表
传递给depack()函数的参数列表
- button¶
当前按下的按钮。
- device¶
用于创建此事件的设备。
- dispatch_mode¶
(实验性)由事件管理器或控件用于指定分发模式。默认为
MODE_DEFAULT_DISPATCH。有关可用模式,请参阅eventmanager。在 2.1.0 版本加入.
- double_tap_time¶
如果触摸是
is_double_tap,这是上一次点击与当前触摸之间的时间。
- property dpos¶
返回屏幕坐标系中最后位置与当前位置之间的差值(self.dx, self.dy)。
- dsx¶
self.sx 与 self.psx 之间的差值,范围在 0-1 之间。
- dsy¶
self.sy 与 self.psy 之间的差值,范围在 0-1 之间。
- dsz¶
self.sz 与 self.psz 之间的差值,范围在 0 到 1 之间。
- dx¶
self.x 与 self.px 之间的差值,在窗口范围内。
- dy¶
self.y 与 self.py 之间的差值,范围在窗口内。
- dz¶
self.z 与 self.pz 之间的差值,位于窗口范围内。
- grab(class_instance, exclusive=False)[源代码]¶
抓取此运动事件。
如果这是一个触摸事件,你可以抓取它,以便接收后续的
on_touch_move()和on_touch_up()事件,即使该触摸不是由父级分发的。def on_touch_down(self, touch): touch.grab(self) def on_touch_move(self, touch): if touch.grab_current is self: # I received my grabbed touch else: # it's a normal touch def on_touch_up(self, touch): if touch.grab_current is self: # I receive my grabbed touch, I must ungrab it! touch.ungrab(self) else: # it's a normal touch pass
在 2.1.0 版本发生变更: 允许非触摸事件进行抓取。
- is_double_tap¶
指示触摸事件是否为双击。
- property is_mouse_scrolling¶
如果触摸事件是鼠标滚轮滚动,则返回 True。
在 1.6.0 版本加入.
- is_touch¶
如果MotionEvent是触摸事件,则为True。
- is_triple_tap¶
指示该触摸事件是否为三次点击。
在 1.7.0 版本加入.
- property opos¶
返回运动事件在屏幕坐标系中的初始位置(self.ox, self.oy)。
- osx¶
原点X位置,范围在0-1之间。
- osy¶
原点Y位置,范围在0-1之间。
- osz¶
原点Z位置,范围在0-1之间。
- ox¶
窗口范围内的原点X坐标。
- oy¶
窗口范围内的原点Y位置。
- oz¶
窗口范围内的原始Z轴位置。
- pos¶
窗口范围内的位置 (X, Y)。
- property ppos¶
返回运动事件在屏幕坐标系中的先前位置(self.px, self.py)。
- profile¶
事件中当前使用的配置文件。
- psx¶
之前的X位置,范围在0-1之间。
- psy¶
之前的Y位置,范围在0-1之间。
- psz¶
之前的Z位置,范围在0-1之间。
- px¶
之前的X位置,位于窗口范围内。
- py¶
之前的Y位置,位于窗口范围内。
- pz¶
之前的Z位置,位于窗口范围内。
- scale_for_screen(w, h, p=None, rotation=0, smode='None', kheight=0)[源代码]¶
为屏幕缩放位置。
在 2.1.0 版本发生变更: x、y 和 z 的最大值分别改为 w - 1、h - 1 和 p - 1。
- property spos¶
返回在0-1坐标系中的位置(self.sx, self.sy)。
- sx¶
X 位置,范围为 0-1。
- sy¶
Y 位置,范围为 0-1。
- sync_with_dispatch¶
如果设置为 True`(默认值),则保留第一个先前位置(X、Y、Z 在 0-1 范围内),并忽略所有其他位置,直到从 `EventLoop 调用
MotionEvent.dispatch_done()为止。该属性是必需的,因为事件提供者可以对
MotionEvent.move()进行多次调用,但对于所有这些调用,事件仅向监听器分发一次。将值设为 False 将保留最近的前一个位置。参见MotionEvent.move()。在 2.1.0 版本加入.
- sz¶
Z 位置,范围在 0-1 之间。
- time_end¶
结束事件的时间(最后一次事件使用的时间)。
- time_start¶
事件创建的初始时间。
- time_update¶
最后一次更新的时间。
- to_absolute_pos(nx, ny, x_max, y_max, rotation)[源代码]¶
使用`x_max`、`y_max`和`rotation`将归一化(0-1)坐标`nx`和`ny`转换为绝对坐标。
- 引发:
ValueError:如果 rotation 不是以下值之一:0、90、180 或 270。
在 2.1.0 版本加入.
- triple_tap_time¶
如果触摸是
is_triple_tap,则这是第一次点击与当前触摸之间的时间。在 1.7.0 版本加入.
- type_id¶
(实验性)用于标识事件类型的字符串。
在 2.1.0 版本加入.
- ud¶
用户数据字典。使用此字典在事件上保存您自己的数据。
- uid¶
事件的唯一标识符。您可以放心使用此属性,它在所有现有事件中绝不会重复。
- x¶
窗口范围内的X位置。
- y¶
窗口范围内的Y坐标。
- z¶
窗口范围内的Z轴位置。
- class kivy.input.MotionEventFactory[源代码]¶
基类:
objectMotionEvent 工厂是一个注册所有可用输入工厂的类。如果你创建了一个新的输入工厂,你需要在此处注册它:
MotionEventFactory.register('myproviderid', MyInputProvider)
- 输入后处理
- 提供商
- Android 摇杆输入提供器
- 自动为可用的多点触控硬件创建输入提供程序配置项(仅限Linux)。
- Windows 提供程序的通用定义
- Leap Motion - 仅手指模式
- 鼠标提供程序实现
- Linux 内核 HID 输入的原生支持
- Linux 上对多点触控设备的原生支持,使用 libmtdev。
- 对MacBook(MaxOSX平台)上MultitouchSupport框架的原生支持。
- linuxwacom 驱动对 Wacom 数位板的原生支持
- TUIO 输入提供器
- 输入记录器
- 运动事件
- 运动事件流程
- 运动事件与事件管理器
- 监听运动事件
- 配置文件
MotionEventMotionEvent.apply_transform_2d()MotionEvent.buttonMotionEvent.copy_to()MotionEvent.depack()MotionEvent.deviceMotionEvent.dispatch_done()MotionEvent.dispatch_modeMotionEvent.distance()MotionEvent.double_tap_timeMotionEvent.dposMotionEvent.dsxMotionEvent.dsyMotionEvent.dszMotionEvent.dxMotionEvent.dyMotionEvent.dzMotionEvent.grab()MotionEvent.grab_currentMotionEvent.idMotionEvent.is_double_tapMotionEvent.is_mouse_scrollingMotionEvent.is_touchMotionEvent.is_triple_tapMotionEvent.move()MotionEvent.oposMotionEvent.osxMotionEvent.osyMotionEvent.oszMotionEvent.oxMotionEvent.oyMotionEvent.ozMotionEvent.pop()MotionEvent.posMotionEvent.pposMotionEvent.profileMotionEvent.psxMotionEvent.psyMotionEvent.pszMotionEvent.push()MotionEvent.push_attrs_stackMotionEvent.pxMotionEvent.pyMotionEvent.pzMotionEvent.scale_for_screen()MotionEvent.shapeMotionEvent.sposMotionEvent.sxMotionEvent.syMotionEvent.sync_with_dispatchMotionEvent.szMotionEvent.time_endMotionEvent.time_startMotionEvent.time_updateMotionEvent.to_absolute_pos()MotionEvent.triple_tap_timeMotionEvent.type_idMotionEvent.udMotionEvent.uidMotionEvent.ungrab()MotionEvent.xMotionEvent.yMotionEvent.z
- 运动事件工厂
- 运动事件提供器
- 运动事件形状