Pygame 的数字键盘输入?

ddd*_*ddd 2 python pygame

我在 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)

有人可以帮忙吗?

slo*_*oth 6

当你想检查键盘上的某个键是否被按下时,可以使用以下常量

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