2017-08-09 51 views
1

如何使用python 3檢測密鑰發佈?

一樣,如果我按下鍵a 1秒,當我從關鍵刪除我的手指(釋放鍵),它會print("Key 'a' pressed then released")如何使用python(而不是按鍵)檢測密鑰發佈?

我試圖用模塊keyboard來做,但我不知道它。我用它來檢測按鍵。
msvcrt模塊不適合我,但如果msvcrt可以做我想做的,那麼你可以回答我。

注:

我不想使用Pygame或任何其他module這將顯示彈出式窗口

+1

[?這(https://github.com/ boppreh /鍵盤#keyboard.on_release)。你可以在你提供的鏈接上點擊一下 –

+1

你的模塊字面上包含一個你要求的例子:https://github.com/boppreh/keyboard/blob/master/examples/pressed_keys.py – BoboDarph

回答

3

你可以使用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 
+1

好的工作,你解決了我的問題:) –

+0

這是好的,但請讓它更容易理解。 –

+1

[**討論聊天室**](https://chat.stackoverflow.com/rooms/151484/disccusions-between-franz-forstmayr-and-muhammad-nouman) –

1

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

可以不用彈出? –

+0

我相信它可以彈出來完成。 – Acafed

+1

再次閱讀我的評論。 –

0

使用Tkinter的,並假設你使用python3,你可以這樣做很容易類似Acafed的回答,:

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() 
相關問題