首页 > 解决方案 > 如何在 kivy 中生成事件,例如 on_touch_down 或 on_touch_up 事件

问题描述

是否可以在 kivy 中生成事件,以便在用户不触摸屏幕的情况下调用 on_touch_up 或 on_touch_down 函数?

标签: pythoneventskivy

解决方案


首先查看Motion Event文档中的注释:

您永远不会自己创建 MotionEvent:这是提供者的角色。

话虽如此,您可以像这样创建和调度一个最小事件:

class MyBoxLayout(BoxLayout):
    def mydispatchAnEvent(self):
        touch = MouseMotionEvent(None, 123, (123, 456))  # args are device, id, spos
        touch.button = 'left'
        touch.pos = (321, 654)
        self.dispatch('on_touch_down', touch)

类(在这种情况下MyBoxLayout)必须是EventDispatcher. 调用mydispatchAnEvent()将向MyBoxLayout.


推荐阅读