2015-01-28 4 views
0

나는 모션 이벤트가 더 '숨기기가 없기 때문에 [위젯을 추가/제거하는 데 사용으로 내가 Kivy는 더블 탭을 등록 얻으려고Kivy를 두 번 눌러

) ... 질문을 많이 가지고 이 위젯 옵션 '... 어쩌면 다음 번 업데이트에서]는 한 번의 터치 다운으로 인해 위젯이 나타나고 사라지며 반복적으로 사라지는 (성가신 일이기 때문) [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 기능없이 정의와 그

on_touch_down: 
    try: self.add_widget(nameofwidget) 
    except: self.remove_widget(nameofwidget) 

을 포함하는 것이 중요하다고 생각 파이썬 측, 잘 작동합니다.

답변

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가 정의 변수가 아니기 때문에 내가 (단지 충돌)이 작동합니다 생각하지 않습니다.