如何使用 python(不是按键)检测按键释放?
How to detect key release with python ( not keypress)?
如何使用 python 3 检测按键释放?
就像我按下 a
键 1 秒,当我将手指从键上移开时 ( 释放键 ) ,它会 print("Key 'a' pressed then released")
.
我想用模块 keyboard
来做,但我不知道如何使用它。我曾经用它来检测按键。
msvcrt
模块不适合我,但如果 msvcrt
可以做我想做的,那么你可以回答我。
注:
我不想使用 Pygame
或任何其他会显示弹出窗口的 module
你可以用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()
根据 pynput
的文档,键盘侦听器是一个线程,它使用 key 参数调用 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()
如何使用 python 3 检测按键释放?
就像我按下 a
键 1 秒,当我将手指从键上移开时 ( 释放键 ) ,它会 print("Key 'a' pressed then released")
.
我想用模块 keyboard
来做,但我不知道如何使用它。我曾经用它来检测按键。
msvcrt
模块不适合我,但如果 msvcrt
可以做我想做的,那么你可以回答我。
注:
我不想使用 Pygame
或任何其他会显示弹出窗口的 module
你可以用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()
根据 pynput
的文档,键盘侦听器是一个线程,它使用 key 参数调用 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()