我目前正在寻找能够检测/监控键盘的库。 我的目的是检测何时按下按键并在发生按键时发生某些事情。
大多数SO帖子建议使用pygame,但我发现它有点太多了,因为这个简单的任务涉及到这样的库。我还试过pynput
,结果只检测到一次按下而不是按下一按。
关于我如何能够做到这一点的任何建议,同时循环检测按键被按下/按住...
我尝试使用while循环:
from pynput import keyboard
def on_press(key):
while key == keyboard.Key.cmd_l:
try:
print('- Started recording -'.format(key))
except IOError:
print "Error"
else:
print('incorrect character {0}, press cmd_l'.format(key))
def on_release(key):
print('{0} released'.format(key))
if key == keyboard.Key.cmd_l:
print('{0} stop'.format(key))
keyboard.Listener.stop
return False
with keyboard.Listener(on_press=on_press, on_release=on_release) as listener:
listener.join()
while解决方案使其陷入while循环,使其无法摆脱它。
答案 0 :(得分:1)
我找到的最简单的方法之一是使用pynput module.can在这里可以找到很好的例子
from pynput import keyboard
def on_press(key):
try:
print('alphanumeric key {0} pressed'.format(
key.char))
except AttributeError:
print('special key {0} pressed'.format(
key))
def on_release(key):
print('{0} released'.format(
key))
if key == keyboard.Key.esc:
# Stop listener
return False
with keyboard.Listener(
on_press=on_press,
on_release=on_release) as listener:
listener.join()
以上是为我设计并安装的示例,请转到
sudo pip install pynput (pip3 if python3.*)
答案 1 :(得分:0)
实际上非常简单。只需几行代码,它就完成了!
from turtle import *
def a():
print("key is pressed!")
forward(5)
def b():
print("key is not pressed!")
backward(30)
listen()
onkeypress(a," ")
onkeyrelease(b," ")
您可以用任意选择的键替换“”,并用“”括起来 例如:“ a”,“ h”,“ e”,“ Up”,“ y”