Reputation: 7313
Like if I pressed the key a
for 1 second , when I remove my finger from the key ( releasing the key ) , It will print("Key 'a' pressed then released")
.
I trying to do it with module keyboard
but I have no idea about how to use it for this. I used to detect keypress with it.
msvcrt
module don't work for me but if msvcrt
can do what I want , then you can answer me.
I Don't want to use Pygame
or any other module
which will show pop-ups
Upvotes: 3
Views: 22895
Reputation: 1300
You can use the pynput
module:
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()
According to the documentation of pynput
keyboard listener is a thread, which calls the function specified on on_release
with the key argument. You can also specify a on_press
function.
Edit:
As asked in discussions, you can stop the listener by returning false
from the on_key_release
function. Like that:
def on_key_release(key):
print('Released Key %s' % key)
return False
Upvotes: 7
Reputation: 51
You can use tkinter
for it:
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()
Upvotes: 5
Reputation: 2588
Similar to Acafed's answer, using tkinter and assuming you are using python3 you could easy do in this way:
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()
Upvotes: 0