2013-06-24 4 views
17

Итак, некоторое время назад я начал учить себя киви. Я начал с основного сайта киви и прошел его учебник по понгу, и, закончив, я решил попробовать и дать ему ключевой вклад. Я просто не могу найти какой-либо справочник по ключевым словам с киви! Кто-нибудь знает какой-то учебник или может предоставить какой-то простой для понимания код? Я посмотрел на прослушиватель клавиатуры в папке примеров 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 

вуаля! Нажмите w и s для левого весла и up и down для правого весла.

+0

А пока это работает, но что бы я сделал, если бы я хотел, чтобы у каждого класса была своя проверка ключа? Могу ли я использовать функцию _on_keyboard_down в каждом классе? Или мне придется несколько раз инициализировать клавиатуру? – Alex

+0

@Alex, это другой вопрос. Вы можете задать новый вопрос вместо использования комментариев. –

+8

Вам нужно будет использовать _keyboard.bind() во всех виджетах, которые в этом нуждаются. – Tshirtman

Смежные вопросы