QGIS3 plugin おさらい

ログの出力

from qgis.core import *

QgsMessageLog.logMessage(“__init__”, ‘test plugin’, Qgis.Info)

メッセージレベルの定数が変更

ダイアログのカスタマイズ

QT Creatorでtest_plugin_dialog_base.uiを開きボタン「btnTest」を追加

通常はQT Creator上でbtnTestのシグナルとスロットの設定を行う。

今回はプログラムで対応。

test_plugin_dialog.pyを編集

class TestPluginDialog(QtWidgets.QDialog, FORM_CLASS):
    def __init__(self, parent=None):
        """Constructor."""
        super(TestPluginDialog, self).__init__(parent)
        # Set up the user interface from Designer.
        # After setupUI you can access any designer object by doing
        # self.<objectname>, and you can use autoconnect slots - see
        # http://qt-project.org/doc/qt-4.8/designer-using-a-ui-file.html
        # #widgets-and-dialogs-with-auto-connect
        self.setupUi(self)
        self.btnTest.clicked.connect(self.pushButton)

    def pushButton(self):
        self.close()

以上の編集を終了したらQGIS再起動で動作確認(makeは不要)

pyQt4の頃はself.btnTestではなくself.ui.btnTestだったような

スロットの前には@pyqtSlot()を付けたような

レイヤの一覧を出力

ボタンが押されたらレイヤの一覧をログに出力

    def pushButton(self):
        for layer in QgsProject.instance().mapLayers().values():
            QgsMessageLog.logMessage(layer.name(), 'test plugin', Qgis.Info)