概要
参考
- qgis-minimal-plugin
- https://github.com/wonder-sk/qgis-minimal-plugin
- 最小限のプラグインに必要なものが記載されている。
- ドキュメント
バージョン情報
- QGISのバージョン: 3.22.14
プラグイン作成
最小構成のQGISプラグインを作ってプラグイン開発の勉強をしてみました。プラグイン作成は初めてです。上記の「qgis-minimal-plugin」を使用しました。
ネット上だとPlugin Builderを使った手順は多いですが、とりあえず触ってみる、という感じだけならこっちでも十分そうです(というか最初に手を付けるならこっちの方がいい気がします)。
とりあえずReadmeの手順に従ってプラグインフォルダの中にminimal
フォルダを作成し、その中にmetadata.txt
と__init__.py
を作成します。
プラグインフォルダ:C:\Users\USER\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins\minimal
両方中身もコピペしますが、__init__.py
はここにも書いておきます。
from PyQt5.QtWidgets import QAction, QMessageBox def classFactory(iface): return MinimalPlugin(iface) class MinimalPlugin: def __init__(self, iface): self.iface = iface def initGui(self): self.action = QAction('Go!', self.iface.mainWindow()) self.action.triggered.connect(self.run) self.iface.addToolBarIcon(self.action) def unload(self): self.iface.removeToolBarIcon(self.action) del self.action def run(self): QMessageBox.information(None, 'Minimal plugin', 'Do something useful here')
classFactory
は__init__.py
に必須のクラスのようですね。__init__
,initGui
,unload
がプラグインクラスに必須のメソッドの様です。initGui
はプラグインが有効になったときに呼ばれるメソッドで、unload
はプラグインが無効になったときに呼ばれるメソッドの様です。- どうやらここでは
Go!
という名前(テキスト属性)でアクションを作成し、メッセージを表示するメソッドを紐づけてツールバーに追加するようです。
有効化してみます。
↓追加されました。アクションがプラグインツールバーに追加されたようです。
アクションをクリックすると以下のメッセージが表示されます。
とりあえず動作確認はできました。
変更の反映
自分でコードをいじって遊びたいのでコードの変更の反映方法を確認しておきます。
とりあえず「プラグインの管理とコンソール」で無効にして再度有効化すればよいようです。
initGUI
の文字をGo?
にしてみます。
def initGui(self): self.action = QAction('Go?', self.iface.mainWindow()) self.action.triggered.connect(self.run) self.iface.addToolBarIcon(self.action)
反映されました。
今のところQGISらしさが皆無なので、QGISのPythonAPIも使用してみます。 プラグイン開発2 · GIS実習オープン教材を参考にレイヤ数を表示してみます。
run
の中身を以下のように変更して再度読み込みます。
def run(self): cnt = self.iface.mapCanvas().layerCount() QMessageBox.information(None, 'Minimal plugin', f'layers: {cnt}')
レイヤ数が表示されました。
これだけで基本的なプラグインとして動かせるので色々遊べそうですね。