質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

1123閲覧

pynput キーワードを式にできない。 反応しない。

Untitled_Sample

総合スコア192

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/04/20 05:30

編集2018/04/20 05:53

押したボタンをr配列に追加する処理を呼び出した時に、
式をキーワードにできないと言われます。

回避する方法はありませんか?

python

1from pynput import keyboard 2 3class Key_operation: 4 5 r=[] #キー入力用 押す 6 R=[] #キー入力用 離す 7 8 # 押す 9 def Key_press(key): 10 try: 11 Key_operation.r+=key.char 12 except AttributeError: 13 pass 14 15 # 離す 16 def Key_release(key): 17 Key_operation.R+=key 18 19 if key == Key.esc: 20 return False 21 22 # 押した時のみ 23 def When_pushed(): 24 with Listener(Key_operation.Key_press = Key_operation.Key_press) as listener:listener.join() 25 # 離した時のみ 26 def When_released(): 27 with Listener(Key_operation.Key_release= Key_operation.Key_release) as listener:listener.join() 28 # 押して離した時 29 def Pushed_away(): 30 with Listener(Key_operation.Key_press = Key_operation.Key_press,Key_operation.Key_release= Key_operation.Key_release) as listener:listener.join() 31 32 33Key_operation.When_pushed()

そもそも、実行できてませんでした。
原因は何でしょうか?

python

1 2from pynput.keyboard import Key, Listener 3 4def Key_press(key): 5 6 try: 7 print(key.char) 8 except AttributeError: 9 print(key) 10 11 12 13def Key_release(key): 14 print(key) 15 16 if key == Key.esc: 17 return False 18 19# 押した時のみ 20with Listener(Key_press= Key_press) as listener:listener.join() 21

#参考にした公式サイトです
https://pypi.org/project/pynput/

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

pynputは使ったことがないので勘ですが、key.charがリストでないのでは?
Key_operation.r+=key.charではなくKey_operation.r.append(key.char)ならどうでしょう。


そもそも、実行できてませんでした。

原因は何でしょうか?

ご提示の公式サイトのサンプルを改造すればいいのでは。
インターフェースに変更があったんじゃないかと推察します。

Python

1from pynput.keyboard import Key, Listener 2 3pressed_keys = [] 4 5def on_press(key): 6 try: 7 pressed_keys.append(key.char) 8 except AttributeError: 9 print(key) 10 11def on_release(key): 12 if key == Key.esc: 13 return False 14 15kwargs = { 16 'on_press': on_press, 17 'on_release': on_release 18} 19with Listener(**kwargs) as listener: 20 listener.join() 21 22print(pressed_keys)

Windows10で動作を確認しました。

投稿2018/04/20 05:58

編集2018/04/20 06:16
LouiS0616

総合スコア35658

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Untitled_Sample

2018/04/20 07:17

with Listener(**kwargs) as listener: listener.join() 自体を終了させたい場合は、どの様に記述するのでしょうか?
LouiS0616

2018/04/20 07:19

ざっと見た感じだと、登録した関数がFalseを返すとスレッドを終了するようです。 上記コードの場合、エスケープキーを押せば終了します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問