2017-08-16 62 views
1

我想通过从事件队列中拉他们来使用pygame注册击键。我可以检索密钥,但是我无法从后面的其他信息中提取它。这是它的外观:使用pygame注册击键

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

我试图处理它像一个字符串,列表,元组和字典,但没有得到任何有用的东西。

这是我以前从事件队列中获取信息的代码:

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

你想用事件或按键做什么? – skrx

+0

我试图创建一个打字游戏,但它看起来像这不会是记录击键的最佳方式。如果您键入的速度较快,它将忽略击键。 –

回答

0

你有什么是pygame的EventType对象。

根据关于该主题的Pygame documentation,您可以通过__dict__成员访问其属性。

下面是一个例子(event.__dict__dict对象):

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

你就应该能够直接访问属性:

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 

看到这个pygame example

你发布的内容看起来更像是一个列表事件比单个事件。您确定您正在使用pygame.event.poll而不是pygame.event.get

0

这听起来像你只需要事件的unicode属性。此外,请使用pygame.event.get()而不是poll来获取所有按键。

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

关于错过击键,最好发表另一个问题。 – skrx