2017-08-16 8 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属性が必要なようです。また、pollの代わりにpygame.event.get()を使用すると、すべてのキーストロークが得られます。

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

逃したキーストロークについては、別の質問を投稿してください。 – skrx

関連する問題