在Pygame中获取键盘输入的更简单方法?

时间:2014-10-20 00:08:19

标签: python python-3.x keyboard pygame keyboard-events

在Pygame中获取键盘输入的方法是否比指定每个键更容易?例如,

if event.key == pygame.K_a:
    command = command + "a"
elif event.key == pygame.K_b:
    command = command + "b"
elif event.key == pygame.K_c:
    command = command + "c"

有没有办法使用函数为我做这个?

1 个答案:

答案 0 :(得分:2)

如果每个键都需要完全不同的操作,那么实际上并没有更好的方法。如果多个键导致类似的操作,例如单个函数f可以将键作为参数,则可以使用in表达式,如下所示:

if event.key in (pygame.K_a, pygame.K_b, pygame.K_c):
    f(event.key)

如果左侧的内容包含在右侧的内容中,in表达式的评估结果为True。因此,使用该代码,如果按下的键是',' b'或' c,'将使用键作为参数调用函数f

作为一个实际的例子,假设你想要' Esc'或者' q'退出计划的关键。你可以这样做:

if event.key in (pygame.K_ESCAPE, pygame.K_q):
    pygame.quit()

上述代码实际上与:

相同
if event.key == pygame.K_ESCAPE:
    pygame.quit()
elif event.key == pygame.K_q:
    pygame.quit()

修改

从评论中,command是连接到的字符串。如果您要添加按下command的任何键a-z,您可以这样做:

if event.key in range(pygame.K_a, pygame.K_z + 1):
    command += event.unicode