回答編集履歴

4

非アクティブ時・フォーカスが外れた時のイベントについて

2022/02/14 13:24

投稿

teamikl
teamikl

スコア8664

test CHANGED
@@ -39,7 +39,8 @@
39
39
  目的と合うか分かりませんが、もし1度きりでよいのなら
40
40
  前提として「ウィンドウがアクティブでフォーカスを持っている時」であれば、
41
41
  eventFilter内で「非アクティブになった時(QEvent.WindowDeactivate)」や、
42
- 「フォーカスが外れた時(QEvent.FocusOut)」の検知は可能です。
42
+ ~~「フォーカスが外れた時(QEvent.FocusOut)」~~ の検知は可能です。
43
+
43
44
 
44
45
  この方法ではマウスのクリックイベントは所得できないので、
45
46
  マウスボタンの左右の判別ができない等、制限はありますが

3

pynput を使った例を追記(外部リンク)

2022/02/14 00:53

投稿

teamikl
teamikl

スコア8664

test CHANGED
@@ -30,3 +30,20 @@
30
30
  追記: 2022/02/14 9:30
31
31
  - [pynput](https://pypi.org/project/pynput/) を使う例 https://replit.com/@MiKLTea/QMouseMonitor
32
32
  [mouse](https://pypi.org/project/mouse/) の方は、自前でスレッドを導入する必要があります。pynput の方が使いやすそうでした。
33
+
34
+ ----
35
+ 追記2
36
+
37
+ > エッジバー以外の領域をクリックしたときにbye()を呼びたい
38
+
39
+ 目的と合うか分かりませんが、もし1度きりでよいのなら
40
+ 前提として「ウィンドウがアクティブでフォーカスを持っている時」であれば、
41
+ eventFilter内で「非アクティブになった時(QEvent.WindowDeactivate)」や、
42
+ 「フォーカスが外れた時(QEvent.FocusOut)」の検知は可能です。
43
+
44
+ この方法ではマウスのクリックイベントは所得できないので、
45
+ マウスボタンの左右の判別ができない等、制限はありますが
46
+ もし、用途がウィンドウ外をクリックすると消失するタイプの一時的なダイアログであれば
47
+ マウス監視を導入しなくても実装できます。
48
+
49
+ 非アクティブの時は判別できないので、限定的な場合のみ使えるかもしれない方法です。

2

セキュリティ設定について説明補足

2022/02/14 00:36

投稿

teamikl
teamikl

スコア8664

test CHANGED
@@ -26,5 +26,7 @@
26
26
  - installEventFilter は全てのイベントを捕捉する手段。通常は、上記の方法を先に検討します。
27
27
  イベント関連の処理は、ほぼ何でもできる代わりに、コードが冗長になります。
28
28
 
29
-
29
+ ----
30
-
30
+ 追記: 2022/02/14 9:30
31
+ - [pynput](https://pypi.org/project/pynput/) を使う例 https://replit.com/@MiKLTea/QMouseMonitor
32
+ [mouse](https://pypi.org/project/mouse/) の方は、自前でスレッドを導入する必要があります。pynput の方が使いやすそうでした。

1

2022/02/13 03:37

投稿

teamikl
teamikl

スコア8664

test CHANGED
@@ -5,6 +5,9 @@
5
5
 
6
6
  マウスやキーボードイベントの監視方法は、プラットフォーム毎に異なります。
7
7
  検索のヒント「Hook」
8
+
9
+ ※ 注意点: 環境によっては権限やセキュリティ関連の設定が必要。
10
+ 他アプリでの操作等の情報を取れる為、マルウェアと判断される可能性があります。
8
11
 
9
12
  Pythonからは、外部ライブラリを利用する方法が簡単です。
10
13
  幾つか候補がありますが、クロスプラットフォームなものは「pynput」「mouse」等。