如何使用Python 3检测按键释放?
例如,如果我按下键盘上的 a
键一秒钟,当我松开手指时,它将会 print("Key 'a' pressed then released")
。
我尝试使用模块keyboard
来实现,但我不知道如何使用它来完成这项任务。我之前用它来检测按键按下。
msvcrt
模块对我无效,但如果msvcrt
能够实现我想要的功能,那么你可以回答我。
注意:
我不想使用Pygame
或任何其他会显示弹出窗口的模块
例如,如果我按下键盘上的 a
键一秒钟,当我松开手指时,它将会 print("Key 'a' pressed then released")
。
我尝试使用模块keyboard
来实现,但我不知道如何使用它来完成这项任务。我之前用它来检测按键按下。
msvcrt
模块对我无效,但如果msvcrt
能够实现我想要的功能,那么你可以回答我。
我不想使用Pygame
或任何其他会显示弹出窗口的模块
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
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()
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()