Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python检测按键释放(而不是按键)? 如何使用python 3检测密钥释放?_Python_Python 3.x_Msvcrt_Keyrelease - Fatal编程技术网

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

如何使用python检测按键释放(而不是按键)? 如何使用python 3检测密钥释放?,python,python-3.x,msvcrt,keyrelease,Python,Python 3.x,Msvcrt,Keyrelease,例如,如果我按下a键1秒钟,当我将手指从键中取出(释放键)时,它将打印(“按下a键,然后释放”) 我试着用模块来做,但我不知道如何用它来做这个。我曾经用它来检测按键。 msvcrt模块对我不起作用,但是如果msvcrt可以做我想做的事情,那么你可以回答我 注: 我不想使用Pygame或任何其他将显示弹出窗口的模块您可以使用tkinter: from tkinter import * def keyup(e): print('up', e.char) def keydown(e):

例如,如果我按下a键1秒钟,当我将手指从键中取出(释放键)时,它将
打印(“按下a键,然后释放”)

我试着用模块来做,但我不知道如何用它来做这个。我曾经用它来检测按键。
msvcrt
模块对我不起作用,但是如果
msvcrt
可以做我想做的事情,那么你可以回答我

注:
我不想使用
Pygame
或任何其他将显示弹出窗口的
模块
您可以使用
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()
从tkinter导入*
def键控(e):
打印('up',e.char)
def按键关闭(e):
打印('down',e.char)
root=Tk()
框架=框架(根,宽度=100,高度=100)
frame.bind(“,向下键)
frame.bind(“,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_key\u 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()
从tkinter导入Tk,Frame#只导入必要的内容。
def钥匙释放(e):
打印('密钥已释放:',repr(e.char))
root=Tk()
f=框架(根,宽度=100,高度=100)
f、 绑定(“,键释放)
f、 包()
root.mainloop()

。你可以关注一下你提供的链接。你的模块包含一个符合你要求的示例:很好,但请让它更容易理解。请再次阅读我的评论。哦,它可以不以其他方式弹出,我想我知道这种方式,也许其他人知道其他方式。。。