wxPythonのwxComboBoxでマウスホイールを無効

2020-03-23

プログラミング言語 Python(パイソン)とGUIインターフェースのwxPythonの話です。

確認環境

  • Windows 10
  • Python 3.8.2

マウスホイールを無効にしたい

コンボボックスをたくさん配置したGUIプログラムで、ウィンドウ(パネル)自体をスクロールしようとしてマウスホイールを回したとき。

コンボボックスの上でマウスホイールを回すと、(コンボボックスがアクティブでも非アクティブでも)コンボボックスに対してマウスホイールが効いてしまい、コンボボックスの選択値が変わってしまいました。

「入力」が表示されている2行目のコンボボックスについて

↑アクティブな場合

↓非アクティブな場合

2行目のコンボボックスの上(Hover)でスクロールすると、「入力」の次の選択肢に変わってしまいます。(説明分かりづらくてすみません)

個人的な価値観では

アクティブな場合の動作としてはOKですが

非アクティブな場合の動作としてはNGです。

これ、現在ではWindows 10の基本動作のようなのですが、個人的には気持ち悪くて仕方ありません。

ここではその解決方法について記載します。

Windows 10の設定で回避

スタートボタン→[設定]→[マウス]

「ポイントしたときに非アクティブ ウィンドウをスクロールする」

この設定を「オフ」にします。

このような設定があるということは…

デフォルト(初期設定)がオフだったら誰も悩まず、みんな幸せなのに…

Pythonのプログラミングで回避

自分以外の人にプログラムを配布する場合には「Windowsの設定を変更してね」とは言いづらいものですので、できるだけプログラミングで回避したいものです。

調べてみたのですが、日本語の情報が見つけられなかったので試してみたものを書いてみます。

こんな感じでとりあえず動作している気がします。

ただし、アクティブな場合も非アクティブな場合もスクロールが効かなくなりました。

効かなくしたかったのは、非アクティブな場合のみだったのですが…

↑アクティブな場合

↓非アクティブな場合

コンボボックスが現在アクティブなのかどうかを判定できれば済む問題なんですが、Python歴2週間程度の私にはそんなこともできないのです。

フォーカス?

調査を継続します。

まとめ

コンボボックスのアクティブ、非アクティブに対するマウスオーバー時のマウススクロールの動作を表にすると以下になります。

マウスホイールアクティブ非アクティブ
デフォルト有効(OK)有効(NG)
Windows設定変更有効(OK)無効(OK)
Pythonプログラム無効(▲)無効(OK)
  • デフォルトは非アクティブがNGなのでNGです。
  • Windowsの設定を変更すると理想の動作になります。
  • プログラム修正したものは、デフォルトよりマシです。

個人的には、以下のように考えています。

  • Windows 10の設定(初期値)がおかしい
  • そのために不毛なプログラミングが必要になっている

間違いの指摘、アドバイス等ありましたらコメント宜しくお願い致します。

(追記)マジで汚ねぇ野郎だ

「ポイントしたときに非アクティブ ウィンドウをスクロールする」

という設定。

この設定の初期値が「オン」となっていることで多くの人が被害を被っていると思われるのですが、Microsoftのブラウザ「Microsoft Edge」の印刷ダイアログ。

これはその設定の範囲外のようです。

「ポイントしたときに非アクティブ ウィンドウをスクロールする=オン」になっているのにマウスホイールでスクロールしないのです。

これ…

「ポイントしたときに非アクティブ ウィンドウをスクロールする」

こういう設定があるのは構いません。

しかし、設定の初期値を「オン」という超絶不可思議にしておいて、自分のところのブラウザ印刷ダイヤログだけはその設定の範囲外にしているという…

つまり

自分の身だけは守りながら、他の全員を貶めるという本当に汚いやり方。

と「誤解」をもたらしかねないやり方は慎んだ方がいい…

ここまでがワンセンテンスだ。全面的に同意して。

こういうやり方する奴、人間だったらマジで生粋のクズ。

クズには話自体が通じないのですが、クズじゃないなら理解して反省して改善してほしい。

以上。

後記

最後までお読みくださりありがとうございます。

こんなに更新したのに、現在はほぼ誰も見ていないゴミカスクズ無価値ブログです。

よければ(はてな)ブックマークや拡散をお願いいたします。

更新の原動力として励ましが欲しいのです…<(_ _)>

当ブログ内お薦め記事

記事はここまでです。