我在 Windows 7 上使用 python 3.7。
有没有办法检测 pynput 模块中的数字(例如:“1”)按键?
我尝试了很多其他模块,但除了 tkinter 之外我什么也没得到
它需要一个窗户,但我不想要那个。
from pynput import keyboard
def on_press(key):
print(key)
if str(format(key)) == 'Key.1':
print('Exiting...')
return False
with keyboard.Listener(on_press = on_press) as listener:
listener.join()
它实际上只打印按下的键并且从不刹车(不接受数字输入)。
您的代码正在测试该值"1"
。这是,请原谅我陈述了显而易见的事情,什么pynput
如果按下则返回1
钥匙。您想要回复NumLock
key.
代替
if str(format(key)) == '1':
您可以编写这些测试中的任何一个,这两个测试都会检查您正在查找的值:
if key == keyboard.Key.num_lock:
if str(format(key)) == "Key.num_lock":
但是……有两种NumLock
key.
One is 键盘数字锁定和清除它同时具有 USB 代码 (0x53) 和 Windows 虚拟键代码 (0x90)。pynput
将响应按此键。
另一种是键盘锁定数字锁定它在键盘级别起作用:它改变了键盘的行为方式,而 Windows 听不到它。它有一个 USB 代码 (0x83),但没有 Windows 虚拟键代码。如果该键没有虚拟键码,则不会出现按下该键的 Windows 消息,并且pynput
报告 Windows 消息。
因此,该行为取决于硬件,您的机器可能具有第二种NumLock
钥匙。如果是这样,那么你无话可说pynput
会有帮助的。不过,除非您使用的是非常有限的笔记本电脑键盘,否则这种情况不太可能发生。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)