Kivy Double Tap

时间:2015-01-28 18:34:51

标签: python touch kivy double-click motionevent

我有很多问题......)

我正在尝试让Kivy注册双击作为用于添加/删除小部件的动作事件[因为没有'隐藏此小部件选项'...可能在下次更新中]因为单次触摸向下使小部件出现并消失,一遍又一遍地出现和消失(这很烦人)。

我的代码(重要的位)[Python,其次是Kivy]:

class SomeScreen(Screen):
    def on_touch_down(touch, *args): 
        if touch.is_double_tap:
            try: self.add_widget(*args)
            except: self.remove_widget(*args)
    pass 

Kivy:

FloatLayout:
    on_touch_down:
        on_touch_down(nameofwidget)

它给出了'KeyError:'is_double_tap“'。

我也试过这个解决方案的集合。

is_double_tap: 
    self.on_touch_down

>>> KeyError: "is_double_tap"

另一种解决方案 -

on_touch_down: 
    self.touch.is_double_tap = try: self.add_widget(nameofwidget), except: self.remove_widget(nameofwidget)

>>> invalid syntax [ at try:]

另一种解决方案:

on_touch_down: 
 self.on_touch_down.is_double_tap: try [ same as above]
>>> invalid syntax [ at try:]

我认为包含那个

非常重要
on_touch_down: 
    try: self.add_widget(nameofwidget)
    except: self.remove_widget(nameofwidget)

没有在Python端定义on_touch_down函数,效果很好。

1 个答案:

答案 0 :(得分:0)

class SomeScreen(Screen):
    def on_touch_down(touch, *args): 

这是一种方法,您的问题是您错过了隐式self。将其声明为def on_touch_down(self, touch):

FloatLayout:
    on_touch_down:
        on_touch_down(nameofwidget)

我认为这不会起作用(只是崩溃),因为on_touch_down不是定义的变量。