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

Python 在Pygame中获取键盘输入的更简单方法?,python,python-3.x,keyboard,pygame,keyboard-events,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" 有什么方法可以使用函数

在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"

有什么方法可以使用函数来为我实现这一点吗?

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

if event.key in (pygame.K_a, pygame.K_b, pygame.K_c):
    f(event.key)
如果左侧的内容包含在右侧的内容中,则
中的
表达式的计算结果为
True
。因此,使用该代码,如果按下的键是“a”、“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()
编辑 从注释中,
命令
是连接到的字符串。如果您想添加按到
命令
的任何键a-z,可以执行以下操作:

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

非常感谢。有没有办法让
f()
打印出密钥的ascii值?只需使用
print()
即可打印出十进制格式。我相信
print(event.unicode)
可以做到这一点,但它似乎只在
KEYDOWN
事件上可用,如图所示(请在页面下方的一点处查看黄色框),因此,请确保您正在检查这些事件,而不是
KEYUP
事件。我正在创建一个应用程序,用户在其中键入文本框并按enter键。框中的文本指定给变量
命令
。然后我调用
os.system(命令)
。有点像GNOME中的run对话框。如果event.key(pygame.K_a,pygame.K_b,pygame.K_c)输入,则代码
!非常感谢。不客气。我在编辑中添加了更多的信息。祝你好运