PyQGISクックブックは、ファイルはQGISのプラグインに共通しているものを説明しています。ご覧のとおり、最小限のプラグインを実行するために必要なファイルは3つだけです。
__init__.py
metadata.txt
mainPlugin.py
この__init__.py
ファイルにより、QGISはプラグインフォルダーがPythonモジュールであることを認識できます。classFactory(iface)
QGISがプラグインを初期化するために使用する関数を含み、mainPlugin.py
ファイルにあるメインのPluginクラスを利用する必要があります。
metadata.txt
プラグインのメタデータ、つまりプラグインの名前、作成者、ライセンス、バージョン、ホームページ、バグトラッカー、リポジトリなどを指定する場所です。
mainPlugin.py
他の方法で名前が付けられている可能性があります。これはで参照されているファイル__init__.py
で、質問で列挙した関数が含まれています。このファイルはプラグインの中核だと思います。
QGISプラグインビルダーについては、公式ドキュメントを読んで構造を理解することをお勧めします。プラグイン開発の基本を学んでいる間、気にしたくない多くのものが作成されるので、私は実際にはそのようなプラグインを使用しないことを好みます。
完全に理解しているプラグインから始めることをお勧めします。つまり、非常に基本的な(最小限でも)プラグイン構造から始めて、必要な場合のみ、および基本をマスターするときに複雑さを追加します。
一方、列挙した関数の目的は次のとおりです。
__init__( self, iface )
これはプラグインのコンストラクタです。QGISがフォルダーをPythonプラグインとして認識すると、__init__()
メソッドが実行され、インターフェースオブジェクトiface
がプラグインに渡されるため、後でQGISにアクセスできます。
このメソッドを使用してiface
(QGISコンポーネントへのエントリポイントになるため)への参照を保存し、プラグインの他の関数で使用する他の変数を初期化する必要があります。
tr( self, message )
これは、文字列から翻訳を取得するPython関数です。もちろん翻訳を提供する必要がありますが、それは他のQtファイル(つまり、.tsファイル)で行います。
一般に、英語以外の言語をサポートする場合を除いて、この関数は必要ありません。新しいPyQGIS開発者にとって、これは間違いなく優先事項ではありません。
add_action( self )
これは、QGIS Plugin Builderを介して生成されたプラグインでのみ見た機能です。プラグインGUIのセットアップに役立ちます。個人的にはプラグインで使用していません。
initGui( self )
これは、QGIS内でプラグインのGUIを設定する方法です。ここでは、QGISプラグインのツールバーのボタン、カスタムツールバー、既存のQGISメニュー内のボタン、または(推奨されません)新しいカスタムメニューのいずれかを指定します。
これは、プラグインボタン(またはその他のコントロール)と機能の間にSIGNAL / SLOT接続を確立するのにも適しています。
unload( self )
これは、QGIS GUIからプラグインウィジェット(ボタン、メニューなど)を削除する方法です。
これは、で接続したSIGNALSとSLOTSを切断するのにも良い場所ですinitGui( self )
。
run( self )
これがプラグインの主な方法です。ここに、ユーザーがプラグインのボタンをクリックしたときに実行されるコードを配置します。概して、現在のQGISプロジェクトから一部のデータを取得することから始めて、編集、処理、またはレポート作成を行います。それは完全にあなた次第です。
プラグインにダイアログがある場合は、これを開いて、ユーザーがダイアログとの対話を開始できるようにする必要があります。ダイアログロジックは通常、コードを配布し、メンテナンスとカプセル化を優先するために、他のPythonファイルで処理されます。
run()
SIGNAL / SLOT接続を設定するのに適した場所ではないことに注意してください。設定すると、プラグインのダイアログを開くたびに設定され、QGISプラグインの奇妙な動作のように(SLOT)関数が複数回トリガーされます。私の関数は二度トリガー。
最後に、QGISプラグインのプログラミングを学ぶ最良の方法は、他のプラグインのソースコードを読むことです。単純なものから始めて、習得したら、より複雑なものに進んでください。
QGISプラグインの動作を理解するのに役立つ(非常にシンプルな)デモプラグインを作成しました。こちらからアクセスできます。READMEファイルにインストール手順があります。プラグインは、メッセージボックスを通じて、要求した各関数がいつ実行されたかを通知します。