2016-04-26 62 views
1

我希望能夠通過鍵盤按下來控制一些連接到我的樹莓派的電機。我有代碼將電機一個方向旋轉5秒,然後另一個方向旋轉5秒鐘,然後關閉它們。我想使用pygame的按鍵監聽功能來通過鍵盤按下來控制電機。我正在使用以下內容作爲鍵盤新聞方面的測試。Python的Pygame Key Listener 3

import pygame 

pygame.init() 

pygame.key.set_repeat(100, 100) 

while 1: 
for event in pygame.event.get(): 
    if event.type == pygame.KEYDOWN: 
     if event.key == pygame.K_w: 
      print 'go forward' 
     if event.key == pygame.K_s: 
      print 'go backward' 
    if event.type == pygame.KEYUP: 
     print 'stop' 

當我運行這個腳本時,我沒有得到任何錯誤,所以我知道它運行。然而,當我按下'w'或's'鍵時,顯示的是'w'或's',就像我剛剛打字一樣。我只需要按一個鍵即可執行一個功能。如果有不同的/更好的方式來做到這一點就沒問題。

+1

所有固定。沒有意識到你需要告訴pygame製作一個窗口,即使窗口沒有被使用。 – Jared

回答

0

Pygame KEYDOWN事件正在尋找在活動窗口按鍵。

您必須創建一個窗口來告訴Pygame從哪裏讀取事件。

另一種解決方案是從終端掛鉤鍵盤事件,所以你不必有一個窗口初始化或焦點,使用這樣的東西:Python Key Binding或使用pyHook庫來製作全局鍵盤事件掛鉤。

P.S - 我意識到你自己解決了這個問題,我將其包括在內以保證完整性。