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

2024-05-17 14:06:13 发布

您现在位置:Python中文网/ 问答频道 /正文

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

就像我按下键a一秒钟,当我从键中取出手指时(松开键),它将print("Key 'a' pressed then released")

我试图用模块keyboard/" rel="nofollow noreferrer">^{}来实现它,但是我不知道如何使用它来实现这一点。我用它来检测按键。
msvcrt模块对我不起作用,但是如果msvcrt可以做我想做的,那么您可以回答我。

注:

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


Tags: 模块key密钥relnofollow手指printthen
3条回答

您可以使用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()

您可以使用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()

根据^{}的文档,键盘侦听器是一个线程,它使用键参数调用on_release上指定的函数。您还可以指定on_press函数。

编辑:

如讨论中所述,可以通过从on_key_release函数返回false来停止侦听器。像这样:

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

类似于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()

相关问题 更多 >