使用 pygame 在 python 中创建一个简单的按键检查器
creating a simple key press checker in python using pygame
我正在 python 中使用 pygame 作为图形用户界面制作一个 Messenger 应用程序。我正在尝试检测按键,但我使用的代码很多,我不喜欢它,我想知道是否有更好的方法来检查按下了哪些键,然后将其发送到字符串变量。
我的代码:
##------>>>__ Letters __<<<------##
if event.key == pygame.K_q:
self.CharKeyPressed = "q"
if event.key == pygame.K_w:
self.CharKeyPressed = "w"
if event.key == pygame.K_e:
self.CharKeyPressed = "e"
if event.key == pygame.K_r:
self.CharKeyPressed = "r"
if event.key == pygame.K_t:
self.CharKeyPressed = "t"
if event.key == pygame.K_y:
self.CharKeyPressed = "y"
if event.key == pygame.K_u:
self.CharKeyPressed = "u"
if event.key == pygame.K_i:
self.CharKeyPressed = "i"
if event.key == pygame.K_o:
self.CharKeyPressed = "o"
if event.key == pygame.K_p:
self.CharKeyPressed = "p"
if event.key == pygame.K_a:
self.CharKeyPressed = "a"
if event.key == pygame.K_s:
self.CharKeyPressed = "s"
if event.key == pygame.K_d:
self.CharKeyPressed = "d"
if event.key == pygame.K_f:
self.CharKeyPressed = "f"
if event.key == pygame.K_g:
self.CharKeyPressed = "g"
if event.key == pygame.K_h:
self.CharKeyPressed = "h"
if event.key == pygame.K_j:
self.CharKeyPressed = "j"
if event.key == pygame.K_k:
self.CharKeyPressed = "k"
if event.key == pygame.K_l:
self.CharKeyPressed = "l"
if event.key == pygame.K_z:
self.CharKeyPressed = "z"
if event.key == pygame.K_x:
self.CharKeyPressed = "x"
if event.key == pygame.K_c:
self.CharKeyPressed = "c"
if event.key == pygame.K_v:
self.CharKeyPressed = "v"
if event.key == pygame.K_b:
self.CharKeyPressed = "b"
if event.key == pygame.K_n:
self.CharKeyPressed = "n"
if event.key == pygame.K_m:
self.CharKeyPressed = "m"
##------>>>__ Numbers __<<<------##
if event.key == pygame.K_1:
if self.BlnShift:
self.CharKeyPressed = "!"
else:
self.CharKeyPressed = "1"
if event.key == pygame.K_2:
if self.BlnShift:
self.CharKeyPressed = '"'
else:
self.CharKeyPressed = "2"
if event.key == pygame.K_3:
if self.BlnShift:
self.CharKeyPressed = "£"
else:
self.CharKeyPressed = "3"
if event.key == pygame.K_4:
if self.BlnShift:
self.CharKeyPressed = "$"
else:
self.CharKeyPressed = "4"
if event.key == pygame.K_5:
if self.BlnShift:
self.CharKeyPressed = "%"
else:
self.CharKeyPressed = "5"
if event.key == pygame.K_6:
if self.BlnShift:
self.CharKeyPressed = "^"
else:
self.CharKeyPressed = "6"
if event.key == pygame.K_7:
if self.BlnShift:
self.CharKeyPressed = "&"
else:
self.CharKeyPressed = "7"
if event.key == pygame.K_8:
if self.BlnShift:
self.CharKeyPressed = "*"
else:
self.CharKeyPressed = "8"
if event.key == pygame.K_9:
if self.BlnShift:
self.CharKeyPressed = "("
else:
self.CharKeyPressed = "9"
if event.key == pygame.K_0:
if self.BlnShift:
self.CharKeyPressed = ")"
else:
self.CharKeyPressed = "0"
##------>>>__ Specials __<<<------##
if event.key == pygame.K_SPACE:
self.CharKeyPressed = " "
if event.key == pygame.K_PERIOD:
if self.BlnShift:
self.CharKeyPressed = "@"
else:
self.CharKeyPressed = ". "
if event.key == pygame.K_COMMA:
if self.BlnShift:
self.CharKeyPressed = "'"
else:
self.CharKeyPressed = ", "
if event.key == pygame.K_SLASH:
self.CharKeyPressed = "/"
if event.key == pygame.K_SEMICOLON:
if self.BlnShift:
self.CharKeyPressed = ":"
else:
self.CharKeyPressed = ";"
对于大多数情况,您可以简单地使用 KEYDOWN
事件的 unicode
属性:
self.CharKeyPressed = event.unicode
我正在 python 中使用 pygame 作为图形用户界面制作一个 Messenger 应用程序。我正在尝试检测按键,但我使用的代码很多,我不喜欢它,我想知道是否有更好的方法来检查按下了哪些键,然后将其发送到字符串变量。
我的代码:
##------>>>__ Letters __<<<------##
if event.key == pygame.K_q:
self.CharKeyPressed = "q"
if event.key == pygame.K_w:
self.CharKeyPressed = "w"
if event.key == pygame.K_e:
self.CharKeyPressed = "e"
if event.key == pygame.K_r:
self.CharKeyPressed = "r"
if event.key == pygame.K_t:
self.CharKeyPressed = "t"
if event.key == pygame.K_y:
self.CharKeyPressed = "y"
if event.key == pygame.K_u:
self.CharKeyPressed = "u"
if event.key == pygame.K_i:
self.CharKeyPressed = "i"
if event.key == pygame.K_o:
self.CharKeyPressed = "o"
if event.key == pygame.K_p:
self.CharKeyPressed = "p"
if event.key == pygame.K_a:
self.CharKeyPressed = "a"
if event.key == pygame.K_s:
self.CharKeyPressed = "s"
if event.key == pygame.K_d:
self.CharKeyPressed = "d"
if event.key == pygame.K_f:
self.CharKeyPressed = "f"
if event.key == pygame.K_g:
self.CharKeyPressed = "g"
if event.key == pygame.K_h:
self.CharKeyPressed = "h"
if event.key == pygame.K_j:
self.CharKeyPressed = "j"
if event.key == pygame.K_k:
self.CharKeyPressed = "k"
if event.key == pygame.K_l:
self.CharKeyPressed = "l"
if event.key == pygame.K_z:
self.CharKeyPressed = "z"
if event.key == pygame.K_x:
self.CharKeyPressed = "x"
if event.key == pygame.K_c:
self.CharKeyPressed = "c"
if event.key == pygame.K_v:
self.CharKeyPressed = "v"
if event.key == pygame.K_b:
self.CharKeyPressed = "b"
if event.key == pygame.K_n:
self.CharKeyPressed = "n"
if event.key == pygame.K_m:
self.CharKeyPressed = "m"
##------>>>__ Numbers __<<<------##
if event.key == pygame.K_1:
if self.BlnShift:
self.CharKeyPressed = "!"
else:
self.CharKeyPressed = "1"
if event.key == pygame.K_2:
if self.BlnShift:
self.CharKeyPressed = '"'
else:
self.CharKeyPressed = "2"
if event.key == pygame.K_3:
if self.BlnShift:
self.CharKeyPressed = "£"
else:
self.CharKeyPressed = "3"
if event.key == pygame.K_4:
if self.BlnShift:
self.CharKeyPressed = "$"
else:
self.CharKeyPressed = "4"
if event.key == pygame.K_5:
if self.BlnShift:
self.CharKeyPressed = "%"
else:
self.CharKeyPressed = "5"
if event.key == pygame.K_6:
if self.BlnShift:
self.CharKeyPressed = "^"
else:
self.CharKeyPressed = "6"
if event.key == pygame.K_7:
if self.BlnShift:
self.CharKeyPressed = "&"
else:
self.CharKeyPressed = "7"
if event.key == pygame.K_8:
if self.BlnShift:
self.CharKeyPressed = "*"
else:
self.CharKeyPressed = "8"
if event.key == pygame.K_9:
if self.BlnShift:
self.CharKeyPressed = "("
else:
self.CharKeyPressed = "9"
if event.key == pygame.K_0:
if self.BlnShift:
self.CharKeyPressed = ")"
else:
self.CharKeyPressed = "0"
##------>>>__ Specials __<<<------##
if event.key == pygame.K_SPACE:
self.CharKeyPressed = " "
if event.key == pygame.K_PERIOD:
if self.BlnShift:
self.CharKeyPressed = "@"
else:
self.CharKeyPressed = ". "
if event.key == pygame.K_COMMA:
if self.BlnShift:
self.CharKeyPressed = "'"
else:
self.CharKeyPressed = ", "
if event.key == pygame.K_SLASH:
self.CharKeyPressed = "/"
if event.key == pygame.K_SEMICOLON:
if self.BlnShift:
self.CharKeyPressed = ":"
else:
self.CharKeyPressed = ";"
对于大多数情况,您可以简单地使用 KEYDOWN
事件的 unicode
属性:
self.CharKeyPressed = event.unicode