2017-02-28 91 views
3

我写了下面的简单程序应打印出由pygame.event.get()检测到的所有事件KEYDOWN事件。pygame的只检测鼠标事件,不检测

import pygame, sys 
from pygame.locals import * 

display = pygame.display.set_mode((300, 300)) 
pygame.init() 

while True: 
    for event in pygame.event.get(): 
     print(event) 
     if event.type == QUIT: 
      pygame.quit() 
      sys.exit() 

但是,当运行此我只有鼠标事件,和一个KEYDOWN和KEYUP事件时,我打大写锁定两次,被印刷在终端。当我使用任何其他键时,它们只会打印到终端,就像我在终端窗口中写入一样。

<Event(4-MouseMotion {'pos': (102, 15), 'buttons': (0, 0, 0), 
'rel': (-197, -284)})> 
<Event(2-KeyDown {'unicode': '', 'scancode': 0, 'key': 301, 'm 
od': 8192})> 
<Event(3-KeyUp {'key': 301, 'scancode': 0, 'mod': 0})> 
wasd 

我使用的是Mac OSX 10.12.1,python 3.5.2和pygame 1.9.4.dev0。

我想我失去了一些东西直线前进,但我没有发现任何类似的在线。任何帮助将非常感激。

+1

你的代码适用于Python 3.5.2和Pygame 1.9.3。箭头键,WASD,一切。可能是1.9.4dev0中引入的一些错误,但我怀疑它。看起来像一个窗口焦点问题给我。你在操作系统和窗口管理器上? – helb

+0

我在当前的OSX上,我会降级到该版本,看看它是否有帮助。谢谢。 –

+1

我在Linux上,可能会有所不同。我会试着用你的版本,但它不在PyPI或它们的Bitbucket上。我在哪里得到'1.9.4.dev0'? – helb

回答

-1

首先,我怀疑你是谁,当你专注于pygame的屏幕上,以便有这么pygame的只注册输入。我没有直接回答你的问题,所以很抱歉,但我确实有我的解决方案或解决它。因为我不喜欢正常的事件系统,所以我使用pygame.key.get_pressed()(https://www.pygame.org/docs/ref/key.html),因为我认为它看起来更好,更具可读性。这可能是我的只是一个坏习惯,虽然SOOO .....

3

如果你在一个工作virtualenv中,不要使用virtualenv命令。

使用python3 -m venv

然后安装pygame(,例如pip3 install hg+http://bitbucket.org/pygame/pygame)。

有关此问题的详细信息,请参见this thread

+0

在搜索了大约一个小时之后,这就是确切的问题!谢谢! – kstullich