我正在制作一个程序,当您按下键盘上的一个键(或只是键入)时,该程序将播放声音。
我刚刚开始研究它,并且尝试使用pygame.key.get_pressed()
检查键盘输入。我到了这里的代码:
from pygame import init, key
init()
spam = []
while True:
spam = key.get_pressed()
if True in spam:
print('KEY PRESSED')
elif False in spam:
print('NONE')
通过检查True
中是否有spam
值(spam
是pygame
返回的列表的名称)来工作。 key.get_pressed
为每个键返回True/False
值的列表,如果按下则返回True
,否则按False
。
此代码的问题是,当我运行它时,它仅输出None
。这意味着我没有检测到键盘输入。
如果有人知道如何解决此问题,或者有更好的解决方法,我将不胜感激!
谢谢!
答案 0 :(得分:1)
pygame.key.get_pressed()
获取所有键盘按钮的状态。它返回一个列表。
但是,请注意,仅当关键事件是pygame.key.get_pressed()
从队列中获取事件时,才更新pygame.event.get()
返回的值。简单来说,pygame.key.get_pressed()
仅在存在事件循环的情况下也有效。
您可以评估特定键(例如空格键):
allKeys = pygame.key.get_pressed()
spam = allKeys[pygame.K_SPACE]
如果要评估是否按下了任何键,则必须评估allKeys
中的any()
值是否为True
:
allKeys = pygame.key.get_pressed()
anyKey = any([k for k in allKeys if k == True])
另一种解决方案是检查KEYDOWN
事件是否发生。下一个未决事件可以通过pygame.event.get()
获取:
keyPressed = False
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
keyPressed = True