2017-08-16 3 views
1

J'essaie d'utiliser pygame pour enregistrer des séquences de touches en les extrayant de la file d'attente d'événements. Je suis capable de récupérer la clé, mais je ne peux pas l'extraire du reste de l'information qui suit. Voici comment il ressemble:Enregistrement de séquences de touches à l'aide de pygame

[<Event(2-KeyDown {'unicode': 'r', 'key': 114, 'mod': 0, 'scancode': 19})>] 

J'ai essayé le traiter comme une chaîne, la liste, tuple, et le dictionnaire, mais rien ne donne quelque chose d'utile.

Ce code je pour obtenir des informations de la file d'attente:

def get_key(): 
    event = pygame.event.poll() 
    if event.type == pygame.KEYDOWN: 
     key_list.append(event) 
+0

Qu'essayez-vous de faire avec les événements ou les séquences de touches? – skrx

+0

J'essaie de créer un jeu de frappe, mais il semble que ce ne sera pas la meilleure façon d'enregistrer des frappes après tout. Il ne tiendra pas compte des frappes si vous tapez pour accélérer. –

Répondre

0

Qu'est-ce que vous avez est un objet Pygame EventType. Selon le Pygame documentation sur le sujet, vous pouvez accéder à ses attributs via le membre __dict__.

Voici un exemple (event.__dict__ est un objet dict):

>>> event.__dict__['key'] 
114 
>>> event.__dict__['mod'] 
0 
0

Vous devriez juste être en mesure d'accéder aux attributs directement:

In [1]: import pygame 

In [2]: pygame.init() 
Out[2]: (6, 0) 

In [3]: event = pygame.event.poll() 

In [4]: event 
Out[4]: <Event(2-KeyDown {'scancode': 0, 'key': 310, 'unicode': u'', 'mod': 0})> 

In [5]: event.key 
Out[5]: 310 

Voir cette pygame example.

Ce que vous avez publié ressemble plus à un que la liste d'événements à un seul événement. Êtes-vous sûr d'utiliser pygame.event.poll et non pygame.event.get?

0

Il semble que vous ayez juste besoin de l'attribut unicode de l'événement. En outre, utilisez pygame.event.get() au lieu de poll pour obtenir toutes les frappes.

for event in pygame.event.get(): 
    if event.type == pygame.KEYDOWN: 
     key_list.append(event.unicode) 
+0

En ce qui concerne les frappes manqués, mieux vaut poster une autre question. – skrx