PyQGIS插件开发经验

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/this_is_id/article/details/90020197

环境配置

方法一

官方文档中有描述:https://docs.qgis.org/3.4/en/docs/pyqgis_developer_cookbook/intro.html#running-custom-applications

方法二

如果使用pycharm开发的话,环境配置相对较简单,直接添加C:\Program Files\QGIS 3.4\bin\python-qgis.bat(ltr版本为python-qgis-ltr.bat),如下图:

编写插件

新建工程

我的工程:D:\pycharm\workspace\qgis_plugin_test

插件结构

官方文档:https://docs.qgis.org/3.4/en/docs/pyqgis_developer_cookbook/plugins/plugins.html#plugin-files

我的插件结构,如下:

 结构说明

__init__.py

插件入口,类名称必须为classFactory

# -*- coding: utf-8 -*-

def classFactory(iface):
    from .main_plugin import PluginTest
    return PluginTest(iface)

main_plugin.py

必须包括两个函数

  • initGui:用于加载插件
  • unload:用于卸载插件

我的main_plugin.py如下:

# -*- coding: utf-8 -*-
# @Time    : 2018/9/30 9:32
# @Author  : llc
# @File    : main_plugin.py


from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QAction, QDialog

import os


class PluginTest:

    def __init__(self, iface):
        self.iface = iface
        self.title = '这是一个插件'

    def initGui(self):
        '''插件加载'''
        self.action = QAction(QIcon(os.path.dirname(__file__)+"/icon.png"), self.title, self.iface.mainWindow())
        self.action.setWhatsThis(self.title)
        self.action.triggered.connect(self.run)

        # 添加到菜单栏
        self.iface.addPluginToMenu("插件测试", self.action)
        # 添加到工具栏
        self.iface.addToolBarIcon(self.action)

    def unload(self):
        '''插件卸载'''
        # 从菜单栏删除
        self.iface.removePluginMenu("插件测试", self.action)
        # 从工具栏删除
        self.iface.removeToolBarIcon(self.action)

    def run(self):
        dialog = QDialog(self.iface.mainWindow())
        dialog.setWindowTitle(self.title)
        dialog.exec_()

icon

插件图标

metadata.txt

插件元数据,官方文档:https://docs.qgis.org/3.4/en/docs/pyqgis_developer_cookbook/plugins/plugins.html#plugin-metadata

我的metadata.txt:

[general]
name=这是一个插件
description=再说一遍,这是一个插件

version=0.0.0
qgisMinimumVersion=3.0
author=llc
icon=icon.png

changelog=
    - 没有日志

插件调试

官方文档中也有描述(超麻烦,没有试验成功):https://docs.qgis.org/3.4/en/docs/pyqgis_developer_cookbook/plugins/ide_debugging.html

我的方法:

  1. 将工程目录链接到QGIS的插件安装目录,打开cmd,执行:cd C:\Users\你的用户名\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins
  2. mklink /J qgis_plugin_test D:\pycharm\workspace\qgis_plugin_test
  3. 然后插件目录会出现一个类似快捷方式的东西:
  4. 打开QGIS,进入插件管理,找到这是一个插件,首次运行需要把打上
  5. 这是插件菜单中和工具栏会多出一个图标:
  6. 点击按钮,弹出对话框:
  7. 如果需要调试,比如把代码中的self.title改为再说一遍,这是一个插件,然后再去第4个步骤取消并重新打勾
  8. 再点击插件按钮,标题就会更新:

发布

将插件压缩为zip包就可以发布了,附上zip包下载地址: https://download.csdn.net/download/this_is_id/11168216

总结

  • 如果代码单元没有用到QGIS相关库,比如说只有界面调试,可以在pycharm中调试完成后,再用QIGS运行插件
  • QGIS插件开发资料较少,模块的方法可以在官方查看:https://qgis.org/pyqgis/3.4/

猜你喜欢

转载自blog.csdn.net/this_is_id/article/details/90020197