2015-01-28 3 views
0

У меня есть много вопросов ...)Kivy Double Tap

Я пытаюсь получить 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) 

, без определения on_touch_down функции на сторона Python, работает просто отлично.

ответ

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 не определена переменная.