Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the all-in-one-seo-pack domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /virtual/mcu03iphuk/public_html/radiology-technologist.info/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the easy-fancybox domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /virtual/mcu03iphuk/public_html/radiology-technologist.info/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the urvanov-syntax-highlighter domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /virtual/mcu03iphuk/public_html/radiology-technologist.info/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the breadcrumb-navxt domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /virtual/mcu03iphuk/public_html/radiology-technologist.info/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the advanced-ads domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /virtual/mcu03iphuk/public_html/radiology-technologist.info/wp-includes/functions.php on line 6114

Notice: 関数 _load_textdomain_just_in_time が誤って呼び出されました。lancr ドメインの翻訳の読み込みが早すぎました。これは通常、プラグインまたはテーマの一部のコードが早すぎるタイミングで実行されていることを示しています。翻訳は init アクション以降で読み込む必要があります。 詳しくは WordPress のデバッグをご覧ください。 (このメッセージはバージョン 6.7.0 で追加されました) in /virtual/mcu03iphuk/public_html/radiology-technologist.info/wp-includes/functions.php on line 6114
matplotlib マウスコントロール(マウスイベント)を使ってみる | 診療放射線技師がPythonをはじめました。

matplotlib マウスコントロール(マウスイベント)を使ってみる

はじめに

プログラムを組んでいる時、マウスを使って何かをしたいという事はとても多いと思います。そこで、今回はそのマウスコントロール(マウスイベント)を紹介したいと思います。


広告
デル株式会社

イベント

マウスイベントの種類としては、

  • マウスをクリックを押した時
  • マウスのクリックを離した時
  • マウスホイールを回した時

の3つのイベントがあります。それぞれ

  • button_press_event
  • button_release_event
  • scroll_event

と名前が付けられています。イベントを呼び出すコードは

で呼び出します。よって、マウスをクリックした時、クリックを離した時、マウスホイールを回した時のイベント呼び出しは以下となります。



広告
HP Directplus -HP公式オンラインストア-

クリックした時、クリックを離した時のイベント

マウスには右クリック、マウスホイールクリック、左クリックの3種類があります。

OpenCvの場合は、それぞれが独立していますが、matplotlibでは、一つのイベントとしてまとめられています。

ではどのようにして区別しているかというと、左クリックをした時は”1”、マウスホイールを押した時は”2”、右クリックを押した時は”3”とevent.buttonという変数に番号が返されます。

なので、関数内に下の様なコードを記すことで機能を分けることができます。

それでは、簡単なコードを紹介します。

左クリックを押すころで背景色を”青”、マウスホイールを押すことで”白”、右クリックを押すことで”赤”に変えるプログラムを紹介します。

上記コードを実行すると以下のようになります。

eventの情報を表示したものになります。中にはダブルクリックの情報もありますので、ダブルクリックしたら背景色が”緑色”になるコードを追加してみたいと思います。(下記コード10行~13行目)

※dbclickではなく、dblclickです。lが入ることに注意してくださいね。

いかがでしょうか?ダブルクリックの時の動作も指定することができました。


広告
BTOパソコン・パソコン関連商品がお買い得!パソコン工房のセール

マウスホイールを回した時のイベント

次に、マウスホイールを回した時の処理について書いていきたいと思います。

マウスホイールのイベントは以下で呼び出します。

マウスホイールを回した時の関数ないに、eventで返される値を表示するコードを24~25行目に追加します。

マウスホイールを回した時の動作はクリック時の時と同じevent.buttonの変数に”up”、”down”で返ってきいることが分かります。

サンプルコードです。

マウスホイールを回した時に背景色が変わるプログラムを作成します。

まずは、カラーリストを作成します。(下記コード28行目)

続いてcolの変数を宣言し(下記コード46行目)、その変数の番号によってリストにある色を背景色として指定します。(下記コード41行目)

colの変数のglobal化をお忘れなく(下記コード25行目)忘れてしまうと、マウスホイールを回しても変数が0でリセットされてしまいます。

後は、マウスホイールを回すことでcolの変数を変えるコードを書きます。(下記コード30~38行目)32~33行目、37~38行目はcolの変数がリストの要素数を超えた場合にリストの最初と、最後に戻すためのものです。

いかがでしたか?マウスホイールを回すことで背景色が変わるプログラムはできましたか?


最後に

今回、クリックを離した時の動作の説明は省略させていただきましたが、クリックした時と同様ですので試してみてください。

マウスコントロールは、画像上でroiを設定したり、WW,WLの変更、マウスホイールは画像を切り替えてみたりと業務上でも常に使っている機能です。

この機能を設定できるようになればプログラムの幅も広がり楽しくなること間違いなしです。

是非、使ってみてください。

次回は、matplotlibで何かのキーを押した時のイベントをやってみたいと思います。


マウスコントロールが動かない場合はこれを試してみて!!

http://radiology-technologist.info/post-1847


環境

  • windows10
  • python3.6.1
  • Anaconda custom(64-bit)
  • PyCharm2020.2(Communication Edition)

広告
上新電機 パソコン買取サービス

Categories:

, ,