首页 > 解决方案 > Pygame的数字键盘输入?

问题描述

我正在使用带有 pygame 的 num pad 并且 num pad 没有被识别。

我知道我必须使用下面的代码,但不是如何:

if (event.key >= 0x100 and event.key <= 0x109)

这是我使用return密钥的代码:

if event.type == KEYDOWN and event.key != 300:
        if (event.key >= 0x100 and event.key <= 0x109 and event.key == pygame.K_RETURN):
....

有人可以帮忙吗?

标签: pythonpygame

解决方案


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

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

您将用于event.key >= 0x100 and event.key <= 0x109检查K_KP0, K_KP1, ... K_KP9,因为K_KP0它是256十进制和0x100十六进制,K_KP9265十进制和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')

你的代码

 if (event.key >= 0x100 and event.key <= 0x109 and event.key == pygame.K_RETURN):

将不起作用,因为event.key不能同时大于256、小于265和等于13K_RETURN13)。


推荐阅读