2017-07-04 133 views
2

我目前正在寻找能够检测/监视键盘的库。 我的意图是检测键何时被按下,以及什么时候发生。如何在不使用pygame的情况下检测按键事件和按键事件

大多数SO帖子都建议使用pygame,但是我觉得它有点太多了,为了这个简单的任务需要一个类似库的库。我也试过用pynput,结果只能检测到一台印刷机而不是一台印刷机。

如何,我可以让这个while循环检测键被按下/按住任何建议...

我与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循环,使其无法摆脱它。

回答

0

其中一个,我发现最简单的方法是使用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() 

以上工作的例子为我和安装,去

​​
+0

我试过t他编码你已经发布,并且它只能检测到一次按键,当按键被按下时,回调函数只被调用一次。 – Mama

+0

你为什么不这个片段绑定到一个 '而真:'' 尝试block' – 2017-07-04 10:29:04

+0

你的意思是 '而真:尝试:' 试了一下,但结果被卡在while循环,并不出去。 – Mama

相关问题