2013-06-24 26 views
17

Vì vậy, một thời gian trước đây, tôi bắt đầu tự dạy mình kivy. Tôi bắt đầu với trang web chính của kivy và đã trải qua hướng dẫn làm bài báo và sau khi hoàn thành, tôi quyết định thử và cung cấp cho nó đầu vào quan trọng. Tôi dường như không thể tìm thấy bất kỳ loại hướng dẫn nào để nhập liệu chính với kivy! Bất kỳ ai biết một số loại hướng dẫn hoặc có thể cung cấp một số mã dễ hiểu? Tôi đã nhìn vào Bàn phím nghe trong thư mục ví dụ của kivy, nhưng tôi không hoàn toàn chắc chắn làm thế nào để sử dụng mà nếu tôi phải.Làm thế nào để bạn kiểm tra các sự kiện bàn phím với kivy?

Cảm ơn bạn đã hỗ trợ.

Trả lời

21

Tôi đoán bạn đang hỏi cách điều khiển các mái chèo bằng bàn phím. Tôi giả sử bạn có các mã ping pong cuối cùng chạy trên máy tính của bạn (Nếu không, bạn có thể tìm thấy chúng ở cuối this section).

1 - Trong main.py nhập khẩu class Window:

from kivy.core.window import Window 

2 - Xác định lại sự khởi đầu của lớp PongGame để nó trông giống như sau:

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 

Voila! Nhấn ws cho mái chèo bên trái và updown cho mái chèo phù hợp.

+0

Ah, điều đó dường như hoạt động trong thời gian này, nhưng tôi sẽ làm gì nếu tôi muốn mỗi lớp học có kiểm tra khóa riêng của họ? Tôi chỉ phải sử dụng _on_keyboard_down func trong mỗi lớp? Hoặc tôi sẽ phải khởi tạo bàn phím nhiều lần? – Alex

+0

@ Alex, đó là một câu hỏi khác. Vui lòng đặt câu hỏi mới thay vì sử dụng nhận xét. –

+8

Bạn sẽ phải sử dụng _keyboard.bind() trong tất cả các tiện ích cần. – Tshirtman