How do you check for keyboard events with kivy?

后端 未结 1 1689
误落风尘
误落风尘 2020-12-01 16:22

So, awhile ago, I started teaching myself kivy. I started with the main kivy website and went through its pong making tutorial and upon finishing that I decided to try and g

相关标签:
1条回答
  • 2020-12-01 16:28

    I guess you are asking how to control the paddles with the keyboard. I assume you have the final ping pong codes running on your computer (If not, you can find them at the end of this section).

    1 - In the main.py import the Window class:

    from kivy.core.window import Window
    

    2 - Redefine the beginning of the PongGame class so it looks like the following:

    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
    

    Voilà! Press w and s for the left paddle and up and down for the right paddle.

    0 讨论(0)
提交回复
热议问题