2017-02-28 5 views
3

私はpygame.event.get()で検出されたすべてのイベントを出力する次の簡単なプログラムを作成しました。私はこれを実行するとPygameはマウスイベントのみを検出し、KEYDOWNイベントは検出しません

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)を使っています。 .....これはおそらく私の悪い習慣です。

3

virtualenvで作業している場合は、virtualenvコマンドを使用しないでください。

python3 -m venvを使用してください。

次に、pygame(、たとえばpip3 install hg+http://bitbucket.org/pygame/pygame)をインストールします。

この問題の詳細については、this threadを参照してください。

+0

約1時間にわたって検索した後、これは正確な問題でした。ありがとうございました! – kstullich

関連する問題