PyQGIS マウスイベントサンプル


どんな動きをするの?

f:id:Chiakikun:20200530141706p:plain

マップ上でマウスカーソルを動かしたりボタンを押下すると、そのときのマウスカーソルの位置をPythonコンソールに表示します。


コード

import qgis
from qgis.core import *
from qgis.gui  import *
from qgis.PyQt.QtCore import Qt

class MouseEventSample(QgsMapTool):
    def __init__(self, canvas):
        QgsMapTool.__init__(self, canvas)

    def canvasMoveEvent(self, event):
        print('マウス移動:' + str(self.toMapCoordinates(event.pos())))

    def canvasPressEvent(self, event):
        if event.button() == Qt.LeftButton:
            print('左クリック!' + str(self.toMapCoordinates(event.pos())))

        if event.button() == Qt.RightButton:
            print('右クリック!' + str(self.toMapCoordinates(event.pos())))

ソースはこちら


試しに使ってみる

例として、ここからダウンロードできるサンプルプラグインに追加します。

nodialog_skelton.pyと同じフォルダにソースを置いて、インポート部分に次のコードを追記します。

from .mouseeventsample import MouseEventSample

nodialog_skelton.pyのstart()の「maptool = self」を次のコードに書き換えます。

    maptool = MouseEventSample(self.canvas)

こんな感じになればOKです。

~略~

from .mouseeventsample import MouseEventSample

class NodialogSkelton(qgis.gui.QgsMapTool):

    def start(self):
        maptool = MouseEventSample(self.canvas)

        self.canvas.setMapTool(maptool)
        self.canvas.mapToolSet.connect(self.unsetTool) # このサンプル実行中に他のアイコンを押した場合
~略~

最後までご覧頂き、ありがとうございました