环境配置

方法一

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

方法二

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

编写插件

新建工程

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

插件结构

官方文档:https://docs.qgis.org/testing/en/docs/pyqgis_developer_cookbook/plugins/plugins.html#structuring-python-plugins

我的插件结构,如下:

结构说明

__init__.py

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

# -*- coding: utf-8 -*-def classFactory(iface):from .main_plugin import PluginTestreturn PluginTest(iface)

main_plugin.py

必须包括两个函数

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

我的main_plugin.py如下:

# -*- coding: utf-8 -*-
# @Time    : 2018/9/30 9:32
# @Author  : llc
# @File    : main_plugin.pyfrom PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QAction, QDialogimport osclass PluginTest:def __init__(self, iface):self.iface = ifaceself.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/testing/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.pngchangelog=- 没有日志

插件调试

官方文档中也有描述(超麻烦,没有试验成功):https://docs.qgis.org/testing/en/docs/pyqgis_developer_cookbook/plugins/ide_debugging.html#debugging-using-eclipse-and-pydev

我的方法:

  1. 设置QGIS_PLUGINPATH环境变量,变量值为插件工程的目录(设置完成,需要重启QGIS)
  2. 打开QGIS,进入插件管理,找到这是一个插件,首次运行需要把打上
  3. 这时插件菜单中和工具栏会多出一个图标:
  4. 点击按钮,弹出对话框:
  5. 如果需要调试,比如把代码中的self.title改为再说一遍,这是一个插件,然后再去第4个步骤取消并重新打勾(建议安装插件Plugin Reloader来重新加载插件)
  6. 再点击插件按钮,标题就会更新:

发布

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

总结

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

PyQGIS插件开发经验相关推荐

  1. chrome浏览器插件开发经验(一)

    chrome浏览器插件开发经验(一) http://open.chrome.360.cn/extension_dev/messaging.html 最近在进行chrome浏览器插件的开发,一些小的经验 ...

  2. word2007插件开发经验备忘1--如何开发word插件

    最近做了word2007的插件开发(VBA开发).虽然还没有完全写完,但是感觉有必要写一些东西了,于是就记录下来.... office的开发分为程序级开发和文档级开发,程序集开发的典型代表就是传说中的 ...

  3. WOW插件:ShortRobot 1.21 发布(2006.10.3)

    下载:http://files.cnblogs.com/simonw/ShortRobot.rar 作者:simonw, [2区 暗影之月 人类牧师 民族英雄] Email::i-simon AT m ...

  4. 从0到1写一款自动给Markdown标题添加序号的Jetbrains插件

    1. markdown-index 最近做了一个Jetbrains的插件,叫markdown-index,它的作用是为Markdown文档的标题自动添加序号,效果如下: 目前已经可以在Jetbrain ...

  5. Openfire4源码部署到eclipse中并编译

    Openfire4源码部署到eclipse中并编译 概述 Openfire是众所周知的基于xmpp协议的IM开源服务,所有操作,配置,监控,调试等以B/S方式进行展示,非常的方便管理员进行管理.它的强 ...

  6. 黄聪:ThinkSAAS开发文档 常用函数 模版修改

    首页 本文档适合任何级别的PHP开发者: 目录 [隐藏] 1 ThinkSAAS开源社区 1.1 快速了解 1.2 下载地址 2 APP组件开发 2.1 入门教程 3 APP插件开发 3.1 入门教程 ...

  7. 5.20爬虫结——Mu

    3852724,最新版墨镜风格模板发布了,有需要的朋友可以进来看看,2759280 3856589,官方手机模板在哪安装,3140684 3856347,手机触摸屏被劫持跳转其它网站,3112842 ...

  8. discuz_result

    命名 discuz_result 3856604,答题注册插件用不了,3140844 3852724,最新版墨镜风格模板发布了,有需要的朋友可以进来看看,2759280 3856589,官方手机模板在 ...

  9. cocos creator 插件开发

    Cocos Creator插件开发经验 这里总结一些creator插件开发的一点小经验,先干为敬!我介绍一些哪些是重点的东西,官网上重复的文档我就不搬了 一:背景 二:需要的知识 三:了解一些小概念 ...

最新文章

  1. 全方位,多角度理解ThreadLocal
  2. 撸个注解有什么难的 请看这里
  3. pycharm的安装和使用
  4. Ajax — 大事件项目(第二天)
  5. 语言nomogram校准曲线图_医学统计与R语言:Meta 回归作图(Meta regression Plot)
  6. linux下java连接mysql_LinuxJava连接MySQL数据库
  7. Django 静态文件处理
  8. verilog赋多位值_Verilog入门学习笔记——第一弹
  9. 全网首发:编译链接错误:对‘vtable for xxxx’未定义的引用
  10. 从武汉远程医疗方案看,5G战“疫”是噱头还是福音?
  11. 金额要用BigDecimal,原理分析
  12. RFID的现状与今后动向 - 2.1 周波数的动向
  13. OJ 2315 Problem E Strawberry
  14. Android通过wifi输出声音,SoundWire – 将手机变成电脑的音箱,通过 WiFi播放电脑内的声音...
  15. 怀化市2021年高考查询成绩,2021年怀化高考状元是谁分数多少分,历年怀化高考状元名单...
  16. ☀️光天化日学C语言☀️(01)- 第一个C语言程序 | 万丈高楼平地起
  17. 又一恐怖技能!卡耐基梅隆大学发布超强智能体,炸翻科研圈
  18. 作业及管理系统(二)
  19. 敏捷的诺基亚测试(Nokia Test)
  20. 强烈建议 | 转行Python最好看一下这篇文章

热门文章

  1. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java高校健康管理平台f2s6y
  2. 工业机器人的自由度轴向如何定义
  3. 1、TCP/IP体系结构
  4. cakephp整理(一)
  5. 误删了文件夹怎么恢复?
  6. 希望VS.NET 2005能提供48x48的图标
  7. Webots+tesla+ROS2
  8. js获取上个月今天或下个月今天
  9. Parallels Desktop 17 测评:M1 Mac 上的 Windows 11
  10. 考研需要降噪耳机吗?好用的降噪耳机推荐!