Python 在Pygame中获取键盘输入的更简单方法?
在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" 有什么方法可以使用函数
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)输入,则代码!非常感谢。不客气。我在编辑中添加了更多的信息。祝你好运