2013-06-24 36 views
17

Yani, bir süre önce kendime kivy dersi vermeye başladım. Ben ana kivy web sitesi ile başladı ve pong yapım öğretici geçti ve bitirerek denemeye karar verdim ve ona anahtar giriş verdim. Ben kivy ile anahtar giriş için herhangi bir kılavuz bulmak için görünmüyor! Herkes bir tür öğretici biliyor ya da anlaşılması kolay bir kod sağlayabilir mi? Kivy'nin örnek klasöründeki Klavye Dinleyicisine baktım, ama eğer yapmam gerekiyorsa bunu nasıl kullanacağımı tam olarak bilmiyordum.Kivy ile klavye olaylarını nasıl kontrol edersiniz?

Yardımlarınız için teşekkür ederiz.

cevap

21

Klavyelerin klavyeyle nasıl kontrol edileceğini soruyorsunuzdur. Bilgisayarınızda çalışan son ping pong kodlarının olduğunu varsayalım (eğer değilse, onları this section'un sonunda bulabilirsiniz).

1 - main.py ithalat Pencere sınıfında:

from kivy.core.window import Window 

2 - aşağıdaki gibi görünecek şekilde PongGame sınıfının başlangıcını yeniden tanımla:

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à! Sol kürek için w ve s ve sağ kürek için up ve down tuşlarına basın.

+0

Ah, şu an için çalışmak gibi görünüyor, ama ben kendi anahtar denetimi sahip olmak her sınıf istiyorsa ben ne yapardım? Her sınıfta sadece _on_keyboard_down func kullanmalı mıyım? Yoksa klavyeyi birden çok kez başlatmalı mıyım? – Alex

+0

@Alex, bu farklı bir soru. Yorumları kullanmak yerine yeni bir soru sormaktan çekinmeyin. –

+8

_keyboard.bind() öğesini ihtiyacınız olan tüm widget'larda kullanmanız gerekir. – Tshirtman

İlgili konular