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

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

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

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

1695閲覧

Pythonのpynputライブラリのサンプルコードがわかりません。

miiisan

総合スコア0

Python 3.x

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/06/23 02:58

前提・実現したいこと

Python初学者です。プログラミングは、少し昔触った程度の素人です。また、オブジェクト指向についてもなんとなくしかわかっていません
マウスのクリックイベントを取得して、スクリーンショットを取りたいと思っています。
pynputライブラリを使うとできるのかと思ったのですが、そもそもサンプルコードを読み解けません。
教えていただけないでしょうか。

発生している問題・エラーメッセージ

具体的な質問
①このコードの関数は、元のpynputのクラスのメソッドをオーバーライドしているのでしょうか。
② on_clickの関数内でprint('{0} at {1}'.format(
'Pressed' if pressed else 'Released',
(x, y))) と書かれていますが、formatの中でPressedがTRUEかFALSEか見て 出力しているということでしょうか。 formatの基本的な書き方しか知らずこういうこともできるのかと困惑しています。
③最後のwith mouse.Listener(
on_move=on_move,
on_click=on_click,
on_scroll=on_scroll) as listener:
listener.join()
ここが一番わかりません。 with構文は、ファイル入出力処理などで使用するという基本的な話は見たのですが、これはそういうことではないですよね?

ごちゃごちゃな質問で申し訳ありません。よろしくお願いします。

該当のソースコード

Python

1 2from pynput import mouse 3 4def on_move(x, y): 5 print('Pointer moved to {0}'.format( 6 (x, y))) 7 8def on_click(x, y, button, pressed): 9 print('{0} at {1}'.format( 10 'Pressed' if pressed else 'Released', 11 (x, y))) 12 if not pressed: 13 # Stop listener 14 return False 15 16def on_scroll(x, y, dx, dy): 17 print('Scrolled {0} at {1}'.format( 18 'down' if dy < 0 else 'up', 19 (x, y))) 20 21# Collect events until released 22with mouse.Listener( 23 on_move=on_move, 24 on_click=on_click, 25 on_scroll=on_scroll) as listener: 26 listener.join() 27

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

  1. オーバーライドしていません。まず、クラスを継承していませんし、そもそもclassの中で定義していないからです。
  2. その通りです。if文を入れることで条件によって値を変えることができます。
  3. イベント駆動型プログラミングで調べられるといいと思います。ここで各イベント(マウスが動いた, クリックした...)が発生した時に呼び出す関数を指定しています。

withはcloseといったメモリ解放の後処理を省略でき可読性が向上します。ファイル処理以外にも使えるということですね。

投稿2020/06/23 06:46

編集2020/06/23 06:48
Penpen7

総合スコア698

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問