2013-06-24 3 views
17

그래서 얼마 전, 나는 kivy를 가르치기 시작했다. 나는 주요 kivy 웹 사이트에서 시작하여 튜토리얼을 만드는 그 테이블을 통과했다. 그리고 끝내면서 나는 그것에게 중요한 입력을 시도하고 결정하기로 결정했다. 나는 단지 kivy로 키 입력에 대한 어떤 종류의 가이드도 찾을 수없는 것 같습니다! 누구나 어떤 종류의 튜토리얼을 알고 있거나 이해하기 쉬운 코드를 제공 할 수 있습니까? Kivy의 examples 폴더에있는 Keyboard Listener를 살펴 봤지만, 필자는 그걸 어떻게 사용해야하는지 잘 모르겠습니다.kivy에서 키보드 이벤트를 어떻게 확인합니까?

어떤 도움을 주셔서 감사합니다.

답변

21

키보드로 패들을 제어하는 ​​방법을 묻는 것 같습니다. 귀하의 컴퓨터에서 실행중인 최종 핑퐁 코드가 있다고 가정합니다 (그렇지 않은 경우 this section 끝에서 찾을 수 있습니다).

- 1 main.py 수입 Window 클래스에서 :

from kivy.core.window import Window 

2 -는 다음과 같습니다 있도록 PongGame 클래스의 시작을 다시 정의 :

class PongGame(Widget): 
    ball = ObjectProperty(None) 
    player1 = ObjectProperty(None) 
    player2 = ObjectProperty(None) 

    def __init__(self, **kwargs): 
     super(PongGame, self).__init__(**kwargs) 
     self._keyboard = Window.request_keyboard(self._keyboard_closed, self) 
     self._keyboard.bind(on_key_down=self._on_keyboard_down) 

    def _keyboard_closed(self): 
     self._keyboard.unbind(on_key_down=self._on_keyboard_down) 
     self._keyboard = None 

    def _on_keyboard_down(self, keyboard, keycode, text, modifiers): 
     if keycode[1] == 'w': 
      self.player1.center_y += 10 
     elif keycode[1] == 's': 
      self.player1.center_y -= 10 
     elif keycode[1] == 'up': 
      self.player2.center_y += 10 
     elif keycode[1] == 'down': 
      self.player2.center_y -= 10 
     return True 

봐라! 왼쪽 패들에 대해 ws을 누르고 오른쪽 패들에 대해 updown을 누릅니다.

+0

아, 당분간 작동하는 것처럼 보이지만 각 클래스가 자체 키 확인을 원한다면 어떻게해야합니까? 각 클래스에서 _on_keyboard_down func 만 사용해야합니까? 아니면 키보드를 여러 번 초기화해야합니까? – Alex

+0

@Alex, 그건 다른 질문입니다. 의견을 사용하는 대신 새로운 질문을하십시오. –

+8

필요한 모든 위젯에서 _keyboard.bind()를 사용해야합니다. – Tshirtman

관련 문제