2013-06-24 73 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関数を使うだけでいいですか?または、キーボードを何度も初期化する必要がありますか? – Alex

+0

@Alex、それは別の質問です。コメントを使用する代わりに、新しい質問をしてください。 –

+8

必要なすべてのウィジェットで_keyboard.bind()を使用する必要があります。 – Tshirtman

関連する問題