如何使用python(不是按键)检测密钥释放?

时间:2017-08-09 08:03:18

标签: python python-3.x msvcrt keyrelease

如何使用python 3检测密钥释放?

就像我按下键a 1秒钟,当我从键(释放键)中移开手指时,它会print("Key 'a' pressed then released")

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

注意:

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

3 个答案:

答案 0 :(得分:4)

您可以使用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功能。

修改

正如讨论中所述,您可以通过false函数返回on_key_release来停止监听器。像那样:

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

答案 1 :(得分: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()

答案 2 :(得分:0)

与Acafed的答案类似,使用tkinter并假设您使用的是python3,您可以通过这种方式轻松完成:

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()