web-dev-qa-db-ja.com

Pythonでキー入力を検出

(2013年)なぜわからないPythonがおかしいのか、グーグルで検索しても簡単に見つけられないが、それは非常に簡単だ。

「SPACE」または実際にキーを検出するにはどうすればよいですか?これどうやってするの:

print('You pressed %s' % key)

これはpython coreに含まれている必要があります。そのため、コアpythonに関連しないモジュールをリンクしないでください。

16
Velocity-plus

小さなTkinterアプリを作成できます。

import Tkinter as tk

def onKeyPress(event):
    text.insert('end', 'You pressed %s\n' % (event.char, ))

root = tk.Tk()
root.geometry('300x200')
text = tk.Text(root, background='black', foreground='white', font=('Comic Sans MS', 12))
text.pack()
root.bind('<KeyPress>', onKeyPress)
root.mainloop()
20
unutbu

Tkinterを使用すると、このためのオンラインチュートリアルが多数あります。基本的に、イベントを作成できます。素晴らしいサイトへの リンク です!これにより、クリックを簡単にキャプチャできます。また、ゲームを作成しようとしている場合、TkinterにはGUIもあります。ゲームにはPythonはお勧めしませんが、楽しい実験になるかもしれません。幸運を祈ります!

3
Praznav

キー入力は事前定義されたイベントです。既存のバインディングメソッド(bindevent_sequenceevent_handlebind_class)の1つまたは複数を使用して、tag_bind(s)をbind_all(s)にアタッチすることにより、イベントをキャッチできます。それを行うには:

  1. event_handleメソッドを定義する
  2. イベントリスト から、あなたのケースに合ったイベント(event_sequence)を選んでください

イベントが発生すると、これらのバインディングメソッドはすべて、Eventオブジェクトを渡すときにevent_handleメソッドを暗黙的に呼び出します。このオブジェクトには、発生したイベントの詳細に関する情報が引数として含まれます。

キー入力を検出するには、最初にすべての'<KeyPress>'または'<KeyRelease>'イベントをキャッチしてから、event.keysym属性を使用して使用される特定のキーを見つけることができます。

以下は、bindを使用して、特定のウィジェット(root)で'<KeyPress>'イベントと'<KeyRelease>'イベントの両方をキャッチする例です。

try:                        # In order to be able to import tkinter for
    import tkinter as tk    # either in python 2 or in python 3
except ImportError:
    import Tkinter as tk


def event_handle(event):
    # Replace the window's title with event.type: input key
    root.title("{}: {}".format(str(event.type), event.keysym))


if __name__ == '__main__':
    root = tk.Tk()
    event_sequence = '<KeyPress>'
    root.bind(event_sequence, event_handle)
    root.bind('<KeyRelease>', event_handle)
    root.mainloop()
2
Nae