QGIS3 Plugin Builderでプラグイン作成

このページでは、QGISプラグイン「Plugin Builder」についてご紹介していきます。Plugin Builderは、QGISプラグインの雛形を作成してくれる補助ツールです。このプラグインを使えば、QGISプラグイン作成が大分楽になります。

Plugin Builderをインストールする

f:id:Chiakikun:20180901143311p:plain

QGISを起動して、メニューの『プラグイン』から『プラグインの管理とインストール』を選択して下さい。

 

f:id:Chiakikun:20180901143419p:plain

②『Plugin Builder』をインストールします。上の赤丸の検索窓で検索すると見つけやすいです。

 

f:id:Chiakikun:20180901143512p:plain

③候補に出てきた『Plugin Builder 3』を選択してインストールして下さい。

 

f:id:Chiakikun:20180901143601p:plain

④Plugin Builderがメニューから選択できるようになりました。

Plugin Builderを使ってみる

ここから先で紹介する手順は、Pythonを使うための設定をしておかないと動作しません。Pythonの設定はこちらで紹介しています。

f:id:Chiakikun:20180901143949p:plain

①Plugin Builderが使えるようになったので、試しにPlugin Builderでプラグインのひな型を作成して実行してみます。メニューの『プラグイン』から『Plugin Builder』を実行し、上の画面のように必要事項を入力してNextボタンを押して下さい。

 

f:id:Chiakikun:20180901144110p:plain

f:id:Chiakikun:20180901144150p:plain

②この辺りは適当に入力して下さい。

 

f:id:Chiakikun:20180901144232p:plain

③ここはそのままにしました。

 

f:id:Chiakikun:20180901144324p:plain

④ここもそのままで、ただ一応お試しなので、チェックボックスにチェックを入れておきました。

 

f:id:Chiakikun:20180901144444p:plain

⑤作成するプラグインの保存先を指定します。私は『E:\QGIS Plugin』フォルダを指定しました。赤線部分がこのプラグインの保存先になります。写真では保存先がDドライブになっていますが、気にしないでください。

 

⑥保存先にソースが作成されたでしょうか?PowerShellを起動して、『cd "E:\QGIS Plugin\test_plugin"』と入力して、保存先に移動します。移動したら、次のコードをコピーしてPowerShellに張り付けて下さい。リソースファイルやユーザーインタフェースファイルをPythonで実行できるように変換します。

pyrcc5 -o resources.py resources.qrc
pyuic5 -o test_plugin_dialog_base.py test_plugin_dialog_base.ui

QGISが今作成したプラグインを探せるように、環境変数を設定します。次のコードをPowerShellに張り付けて実行して下さい。

$old = [System.Environment]::GetEnvironmentVariable("QGIS_PLUGINPATH", "User")
$old += ";E:\QGIS Plugin"
[System.Environment]::SetEnvironmentVariable("QGIS_PLUGINPATH", $old, "User")

f:id:Chiakikun:20180901145055p:plain

QGISに戻って、メニューの『プラグイン』から『プラグインの管理とインストール』を選択して下さい。

 

f:id:Chiakikun:20180901145401p:plain

f:id:Chiakikun:20180901145527p:plain

⑧検索窓に先ほど作成したプラグインの名前を入力するとプラグインが見つかります。チェックして有効にして下さい。

 

f:id:Chiakikun:20180901145600p:plain

⑨作成したプラグインツールバーに登録されます。実行してみると...

 

f:id:Chiakikun:20180901145648p:plain

⑩ウィンドウが表示されました。

Plugin Builderで作成した雛形に少し手を加える

f:id:Chiakikun:20180930154055p:plain

 ①フォームに少し手を加えてみます。「Qt Designer」を起動します。スタートボタンを押して、検索窓に「designer」と入力すると、候補が出てきます。上の赤丸を選択してください。

 

f:id:Chiakikun:20180930154233p:plain

 ②先ほど作成したTest Pluginのフォームを選択します。メニューの「ファイル」→「開く」を選択すると、ファイル選択ダイアログが出るので、「E:\QGIS Plugin\testplugin\test_plugin_dialog_base.ui」を選択します。

 

f:id:Chiakikun:20180930155003p:plain

③Test Pluginのフォームが表示されました。

 

f:id:Chiakikun:20180930155429p:plain

④Line Editを貼り付けます。貼り付けたらメニューの「ファイル」→「保存」を選択して、Designerを終了します。

 

Plugin Builderを使ってみるの⑥のように、ユーザーインターフェースPythonで実行できるように変換します。

pyuic5 -o test_plugin_dialog_base.py test_plugin_dialog_base.ui

 

f:id:Chiakikun:20180930162023p:plain

⑥フォームの変更が反映されているか確認してみます。QGISを起動して、Test Pluginボタンをクリックします。Line Editが追加されたフォームが表示されましたでしょうか?

 

 ⑦ソースに少し手を加えてみます。test_plugin.pyを編集します。33行目あたりに次のコードを追加します。

import qgis.core

 さらに185行目あたりにあるrunメソッドの「if result:」と書かれたコードの下に次のコードを挿入します。lineEditに指定したシェープファイルを読み込むコードです。

            file = self.dlg.lineEdit.text()
            layer = qgis.core.QgsVectorLayer(file, u"サンプルレイヤ", "ogr")
            if layer.isValid():
                qgis.core.QgsProject.instance().addMapLayer(layer)

f:id:Chiakikun:20180930172524p:plain

⑦QGISを起動して、Test Pluginを実行します。そしてLine Editに適当なシェープファイルのフルパスを指定してOKボタンをクリックします。指定したシェープファイルがQGISに読み込まれると思いますが、うまく表示されたでしょうか?

 

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