python - 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):
....
有人可以帮忙吗?
解决方案
当您想检查是否按下了键盘的某个键时,可以使用以下常量;
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_KP9
是265
十进制和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
和等于13
(K_RETURN
是13
)。
推荐阅读
- json - 使用 django 和 postgresql 将 json 数据保存到我的数据库中
- python - Odoo:服务器操作在“activity_user_type”列中返回空值违反了非空约束
- spring - 当下游一段时间没有响应时,基于 Spring Zuul Header 的路由挂起
- vb.net - 如何正确渲染嵌入的字体?
- pandas - Pandas - 当列中有 NaN 值时将 float 转换为 int
- r - 在 r 软件中找不到我给定数据的平均值
- python - 如果输入是元组,numpy 数组是否会丢失维度?
- jquery - 无法使用 jquery 获得正确的平均持续时间
- java - 如何在响应中添加soap ws寻址标头
- javascript - 在 React 中如何使用另一个属性值获取对象的属性值?