2017-08-09 46 views
1

如何使用python 3检测密钥发布?

一样,如果我按下键a 1秒,当我从关键删除我的手指(释放键),它会print("Key 'a' pressed then released")如何使用python(而不是按键)检测密钥发布?

我试图用模块keyboard来做,但我不知道它。我用它来检测按键。
msvcrt模块不适合我,但如果msvcrt可以做我想做的,那么你可以回答我。

注:

我不想使用Pygame或任何其他module这将显示弹出式窗口

+1

[?这(https://github.com/ boppreh /键盘#keyboard.on_release)。你可以在你提供的链接上点击一下 –

+1

你的模块字面上包含一个你要求的例子:https://github.com/boppreh/keyboard/blob/master/examples/pressed_keys.py – BoboDarph

回答

3

你可以使用pynput模块:

from pynput import keyboard 

def on_key_release(key): 
    print('Released Key %s' % key) 

with keyboard.Listener(on_release = on_key_release) as listener: 
    listener.join() 

根据pynput的文档,键盘监听器是一个线程,它使用key参数调用on_release上指定的函数。您也可以指定一个on_press函数。

编辑:

至于问讨论,您可以通过从on_key_release函数返回false停止监听。这样的:

def on_key_release(key): 
    print('Released Key %s' % key) 
    return False 
+1

好的工作,你解决了我的问题:) –

+0

这是好的,但请让它更容易理解。 –

+1

[**讨论聊天室**](https://chat.stackoverflow.com/rooms/151484/disccusions-between-franz-forstmayr-and-muhammad-nouman) –

1

可以使用tkinter它:

from tkinter import * 
def keyup(e): 
    print('up', e.char) 
def keydown(e): 
    print('down', e.char) 

root = Tk() 
frame = Frame(root, width=100, height=100) 
frame.bind("<KeyPress>", keydown) 
frame.bind("<KeyRelease>", keyup) 
frame.pack() 
frame.focus_set() 
root.mainloop() 
+1

可以不用弹出? –

+0

我相信它可以弹出来完成。 – Acafed

+1

再次阅读我的评论。 –

0

使用Tkinter的,并假设你使用python3,你可以这样做很容易类似Acafed的回答,:

from tkinter import Tk,Frame #importing only necessary stuff. 

def keyrelease(e): 
    print('The key was released: ', repr(e.char)) 

root = Tk() 
f = Frame(root, width=100, height=100) 
f.bind("<KeyRelease>", keyrelease) 
f.pack() 
root.mainloop() 
相关问题