2017-02-28 30 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