2014-03-27 45 views
0

我有一個程序在pygame環境中接收用戶的密鑰,然後在控制檯上打印一些信息並執行一些其他的工作 它在Windows上工作正常 當使用非常相同的代碼切換到linux時,它不能正常工作,並且它似乎沒有響應任何來自鍵盤 的輸入鍵,我試圖將1/0用於測試Hyperboreus先生建議的確切問題的位置(註釋下面的代碼) ,我發現確切的問題,「如果event.key」python pygame程序在切換到linux時無法正常工作

的功能,我使用:

for event in pygame.event.get(KEYDOWN): 
    # 1/0 --> it give me an error when pressing any button 
    if event.key == K_i: 
     numbers.insert(0,number) 
     #1/0 --> is not giving me any error when pressing i 
     print "ingoing" 

     return 1   #"ingoing" 




    elif event.key==K_m: 
     numbers.insert(0,number) 
     print "missed" 

     return 2    #"missed" 

    elif event.key==K_o: 
     numbers.insert(0,number) 
     print "outgoing" 

     return 3    #"outgoing" 

    elif event.key==K_l: 
     disp_log() #this function displays test on the pygame screen 
else : 
    None 

,我該命令 蟒蛇xxxxx.py播放從終端腳本

我安裝python2.7,python3和python3.2和pygame的 ,我試圖刪除它們,並重新安裝它們,同樣的問題存在

+1

請在'print'ingoing''之前的行上放一個'1/0',以確保滿足這個條件。如果你的腳本在按'i'時發生錯誤,那麼輸出有問題。如果它沒有拋出錯誤,那麼你永遠不會到達'print'行。請發佈結果。 – Hyperboreus

+0

@Hyperboreus:它沒有給出錯誤! ,聰明的建議 –

+1

聰明的建議:(a)你的事件循環沒有運行,(b)你永遠不會得到關鍵事件,(c)太陽耀斑。真的,我只是在一個泥濘的池塘裏用棍子戳。檢查你的整個腳本,看看你的代碼實際上執行多遠,如果主要事件循環運行,等等。 – Hyperboreus

回答

0

作爲@Hyperboreus建議,我把打印event.key作爲第一行到。我使用的條件,而不是「K_i」或「K_m」等打印值..等

它對我來說工作得很好。

可能pygame在我的版本,這是最新的刪除了使用K_key的選項,並用其他東西替換它。但向上的方法對我來說工作得很好,這要感謝@Hyperboreus