2013-08-27 72 views
1

我知道已經發布了關於同一問題的一些問題,但提出的解決方案並沒有幫助我。Python:pygame.key.get_pressed not working

我想在任何給定的時間來監視箭頭鍵的狀態(按下/未按下),所以我有以下代碼:

import pygame 

pygame.init() 
a=[0,0,0,0] 

while True: 
    keys = pygame.key.get_pressed() 
    if keys[pygame.K_LEFT]: 
     a[0]=1; 
    else: 
     a[0]=0; 
    if keys[pygame.K_RIGHT]: 
     a[1]=1; 
    else: 
     a[1]=0; 

    if keys[pygame.K_UP]: 
     a[2]=1; 
    else: 
     a[2]=0; 

    if keys[pygame.K_DOWN]: 
     a[3]=1; 
    else: 
     a[3]=0; 

    print a 
    pygame.event.pump() 

所以,基本上,我把打印列表一個 4個數字,每個代表一個箭頭鍵(如果按下則爲1,否則爲0)。

但是,即使長時間按住箭頭鍵,列表中的所有值始終爲零。

我也嘗試打印整個陣列:原來所有條目都是零一遍,不管我要按哪個鍵多長時間

任何幫助將不勝感激......

謝謝 !

編輯:忘了提,我使用python 2.7在Windows 7上

回答

2

首先,如果你還沒有真正建立一個pygame的窗口,沒有事件將被傳遞到pygame的,因此pygame.key.get_pressed()韓元的結果不會更新。 Pygame只接收當前pygame窗口上的事件。您可能正在查看不接收事件的控制檯。我在pygame.init()之後加了pygame.display.set_mode((100,100)),然後運行程序。我在pygame窗口中點擊。然後控制檯開始在控制檯中顯示相應的控制檯。

還建議添加一些東西來暫停像time.sleep這樣的循環以及諸如事件檢查之類的東西來突破它。 (正確退出)

+0

謝謝,那就是了。實際上,我對創建遊戲並不感興趣,我只是想爲了不同的目的監視箭頭鍵,並且我被告知最好的方法是使用pygame。我不知道我必須創建一個窗口才能正常工作...... – Nfys

+0

Tkinter可能會有幫助,但我不確定,您可能還需要創建根窗口。我不確定任何方法只用控制檯來監視箭頭鍵。 – DoubleMx2