如何检测键盘输入以使用python播放声音?

时间:2019-03-13 04:30:04

标签: python python-3.x pygame

我正在制作一个程序,当您按下键盘上的一个键(或只是键入)时,该程序将播放声音。

我刚刚开始研究它,并且尝试使用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值(spampygame返回的列表的名称)来工作。 key.get_pressed为每个键返回True/False值的列表,如果按下则返回True,否则按False

此代码的问题是,当我运行它时,它仅输出None。这意味着我没有检测到键盘输入。

如果有人知道如何解决此问题,或者有更好的解决方法,我将不胜感激!

谢谢!

1 个答案:

答案 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