2017-08-09 23 views
1

Python 3でキーリリースを検出するにはどうすればよいですか?

私はキー(キーを離す)から私の指を削除すると、私は、1秒間のキーaを押した場合と同じように、それはprint("Key 'a' pressed then released")ます。Pythonでキーリリースを検出するには(keypressではなく)?

私はモジュールkeyboardでそれをやろうとしているが、私はそれについては考えています。私はそれを使ってキー押下を検出しました。
msvcrtモジュールは、私のために動作しませんが、msvcrtは私がやりたいことができれば、あなたは私を答えることができます。

注:

私はPygameを使用したくないまたはポップアップ

+1

[?この](https://github.com/ boppreh/keyboard#keyboard.on_release)。 https://github.com/boppreh/keyboard/blob/master/examples/pressed_keys.py –

+1

モジュールを提供するリンク上のビットは、文字通りあなたが求めるものをない一例が含まれています従うことができますポップアップ? – 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() 
キーボードリスナーの文書によると、

は、キー引数でon_releaseに指定された関数を呼び出したスレッドです。 on_press関数を指定することもできます。

編集:

議論に尋ねたとして、あなたはon_key_release関数からfalseを返すことで、リスナーを停止することができます。そのような:

Tkinterのを使用して、あなたが簡単にこのような方法で行うことができますのpython3を使用していると仮定すると、Acafedの答えと同様に
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を使用することができます表示され、他のmodule

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

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() 
関連する問題