我目前正在嘗試在python中創建一個小遊戲,但是當我嘗試使用keydown/keyup事件時,我的系統會將這兩個事件解釋爲一個。我寫了一個簡單的腳本來監視由'pygame'(一個簡化python遊戲的模塊)創建的事件,當我按下一個鍵時,它立即在python shell中顯示keydown和keyup事件:code screenshot。這與我的鍵盤有關嗎?在Python中使用keydown/keyup的基本輸入
0
A
回答
0
KEYDOWN事件之後緊接着的KEYUP事件的問題是由display = pygame.display.set_mode((800, 600))
行在您的主循環中造成的。該程序正在循環的每次迭代中創建一個新的顯示。這一行,需要放在主循環之前,因爲它應該放在主循環之前。這與pygame.display.set_caption()
一樣,因爲它只需要調用一次。
這樣做應該通過KEYUP事件清除你的問題;然而,按住鍵仍然不會工作,因爲Pygame初始化時默認關閉鍵重複。要啓用它,必須調用pygame.key.set_repeat(delay, interval)
方法。這也應該在你的主循環之前。
在該方法中,值delay
是第一次按鍵重複發生之前的延遲將以毫秒爲單位發生,如果它設置爲零,則鍵重複將被禁用。值interval
是第一次之後每個連續重複之間的時間。這個文檔可以發現here in the Pygame documantation,其中描述如下:
啓用鍵盤重複,保留的向下鍵將產生多個pygame.KEYDOWN事件。延遲是第一次重複pygame.KEYDOWN發送之前的毫秒數。之後,另一個pygame.KEYDOWN將每間隔毫秒發送一次。如果沒有參數通過,則重複鍵被禁用。
pygame初始化時,密鑰重複被禁用。
作爲一個例子:pygame.key.set_repeat(1, 15)
將基本上沒有延遲,應該提供一個大體上平穩的旅行。
相關問題
- 1. 在Python中使用基本python的多行輸入
- 2. 基本的用戶輸入
- 3. 使用鍵盤輸入製作基本的python計數器
- 4. 我想在Python中循環一個基本的用戶輸入腳本
- 5. Java中的基本輸入和輸出
- 6. 在python中輸入輸入?
- 7. 在使用js的文本輸入中禁用數字輸入
- 8. glob文件用作python腳本中的python腳本的輸入。
- 9. 輸入使用Python
- 10. 在Python中使用XGBoost預測輸出變量基於多個輸入變量
- 11. 在python中使用for循環輸入
- 12. 在python中使用輸入3
- 13. 使用python在excel中輸入數據
- 14. 如何在Python中輸入腳本輸入的答案
- 15. 使用輸入值的Python
- 16. 解析爲基本類型,基於c#中的用戶輸入#
- 17. 無法在字典中使用python腳本輸入字符
- 18. 使用GUI輸入變量並在Python中運行腳本
- 19. 使用python在psychopy中添加文本輸入對話框?
- 20. 使用Python中的Mechanize在標籤內的輸入中輸入用戶名
- 21. 基於輸入顯示更新值的輸入循環增量使用python
- 22. 基本輸入/輸出的一部分
- 23. Python程序不使用輸入輸入()
- 24. 基本與使用python
- 25. 基本Netfilterqueue使用Python
- 26. Python如何在使用GUI的其他功能中使用輸入文本值
- 27. 基於用戶輸入在Python中顯示不同值
- 28. 在pygame中使用文本輸入
- 29. 在Python腳本中使用接收到的Twilio文本消息作爲輸入
- 30. 如何檢索使用webdriver(python)在文本字段中輸入的文本?
請閱讀[this](http://stackoverflow.com/help/mcve)。提供代碼的相關部分。複製並粘貼純文本,不要發佈屏幕截圖。 – timgeb
好吧,我添加了代碼的截圖,但是我沒有將它放在第一位,因爲這很可能與我的問題無關。 – samYemmY
爲了將來的使用:問題編輯器中有「代碼」標籤。如果代碼太多,請使用pastebin.org或類似的代碼。 –