我在 pygame 中使用数字键盘,但数字键盘无法被识别。
我知道我必须使用下面的代码,但不知道如何使用:
if (event.key >= 0x100 and event.key <= 0x109)
Run Code Online (Sandbox Code Playgroud)
这是我使用return密钥的代码:
if event.type == KEYDOWN and event.key != 300:
if (event.key >= 0x100 and event.key <= 0x109 and event.key == pygame.K_RETURN):
....
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
当你想检查键盘上的某个键是否被按下时,可以使用以下常量;
K_KP0 keypad 0
K_KP1 keypad 1
K_KP2 keypad 2
K_KP3 keypad 3
K_KP4 keypad 4
K_KP5 keypad 5
K_KP6 keypad 6
K_KP7 keypad 7
K_KP8 keypad 8
K_KP9 keypad 9
K_KP_PERIOD . keypad period
K_KP_DIVIDE / keypad divide
K_KP_MULTIPLY * keypad multiply
K_KP_MINUS - keypad minus
K_KP_PLUS + keypad plus
K_KP_ENTER \r keypad enter
K_KP_EQUALS = keypad equals
Run Code Online (Sandbox Code Playgroud)
您可以用来event.key >= 0x100 and event.key <= 0x109检查K_KP0, K_KP1, ... K_KP9,因为K_KP0is 是256十进制和0x100十六进制,K_KP9is265是十进制和0x109十六进制等。
此外,实际使用常量而不是十六进制文字的可读性会更好。
下面是一个关于如何检查所有键盘数字或键盘返回键的简单示例:
import pygame
screen = pygame.display.set_mode((300, 300))
while True:
for e in pygame.event.get():
if e.type == pygame.QUIT:
quit()
if e.type == pygame.KEYDOWN:
if pygame.K_KP0 <= e.key <= pygame.K_KP9:
print('Numpad 0-9')
if e.key == pygame.K_KP_ENTER:
print('Numpad ENTER')
Run Code Online (Sandbox Code Playgroud)
你的代码
if (event.key >= 0x100 and event.key <= 0x109 and event.key == pygame.K_RETURN):
Run Code Online (Sandbox Code Playgroud)
不起作用,因为event.key不能同时大于256、小于265和等于( is )。13K_RETURN13