Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Numpad不在pygame中工作_Python_Python 3.x_Pygame - Fatal编程技术网

Python Numpad不在pygame中工作

Python Numpad不在pygame中工作,python,python-3.x,pygame,Python,Python 3.x,Pygame,我需要通过数字usb键盘将数字输入pygame脚本中的一个框中。如果我使用普通键盘,我可以在键盘的上部区域输入数字。如果我尝试使用numpad,我会得到像“a”这样的字母作为数字1。如果我试着只使用numpad(林迪),我 什么也得不到。实际上,我的脚本是通过以下方式获取关键点: def get_key(): while 1: event = pygame.event.poll() if event.type == KEYDOWN: return event.ke

我需要通过数字usb键盘将数字输入pygame脚本中的一个框中。如果我使用普通键盘,我可以在键盘的上部区域输入数字。如果我尝试使用numpad,我会得到像“a”这样的字母作为数字1。如果我试着只使用numpad(林迪),我 什么也得不到。实际上,我的脚本是通过以下方式获取关键点:

def get_key():
  while 1:
    event = pygame.event.poll()
    if event.type == KEYDOWN:
      return event.key

    else:
      pass
我哪里错了,为什么不能从numpad那里得到数字?
感谢您的帮助

Pygame KEYDOWN事件将字母数字区域编号存储在48-57(
0x30-0x39
)范围内,这是它应该存储的。但是,无论是否切换numlock,numpad压力机的报告范围为256-265(
0x100-0x109

Numpad 1的值的打印输出显示为“a”的原因是Numpad 1的键值是257,在Unicode中是a(U+0101)

下面是一个快速代码段,可以将numpad按键转换为其等效的ASCII键值(不转换其他numpad键,如Enter键、+、或Delete键,它们的值也与键盘上其他位置的等效键不同):


if(event.key>=0x100和event.key你读了吗?尝试:
如果event.key==pygame.key.K_KP0
我有一个类似的问题,你能帮我吗?我有一个类似的问题,你能帮我吗?对不起,它不起作用。我把你的行添加到我的代码中,现在当我输入数字时,什么都没有发生。昨天我为每个数字添加了while代码条件:if inkey==K_KP(1-0):string.append(“1-0”)。这在全键盘上起作用,但在Lindy的数字键盘上,什么也没有发生。请尝试运行,并让我知道当按下键盘1和Numpad 1时,您在控制台中得到的值。当我在全键盘上按1时,我得到:接收键:49‘翻译’值:49。当我在Numpad上按1时,我得到:接收键:300‘翻译’值:300键记录eived:257‘翻译’值:49。对于numpad“2”:收到的键:300‘翻译’值:300收到的键:258‘翻译’值:50。我尝试了所有10个数字,但现在不放在这里。我只显示“回车”numpad:Key received:300“Translated”值:300 Key received:271“Translated”值:271–keycode“300”是激活的Num Lock的常量,我假设每次按下numkey时Lindy都会发送它。请尝试重新编写def_Key()函数,让我知道它是否有效:它有效!因此我使用numpad输入时间(hh和mm)在闹钟中。当我输入小时数(es.09)时,我需要用enter键确认,然后传递到分钟数。现在,我可以输入小时数,但enter键不起作用。你知道吗?我应该扩展0x109吗?非常感谢!
if (event.key >= 0x100 and event.key <= 0x109):
  return event.key - 0xD0
else:
  return event.key