PyQGIS插件开发经验
环境配置
方法一
官方文档中有描述: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
我的方法:
- 设置QGIS_PLUGINPATH环境变量,变量值为插件工程的目录(设置完成,需要重启QGIS)
- 打开QGIS,进入插件管理,找到这是一个插件,首次运行需要把√打上
- 这时插件菜单中和工具栏会多出一个图标:
- 点击按钮,弹出对话框:
- 如果需要调试,比如把代码中的self.title改为再说一遍,这是一个插件,然后再去第4个步骤取消并重新打勾(建议安装插件Plugin Reloader来重新加载插件)
- 再点击插件按钮,标题就会更新:
发布
将插件压缩为zip包就可以发布了,附上zip包下载地址: https://download.csdn.net/download/this_is_id/11168216
总结
- 如果代码单元没有用到QGIS相关库,比如说只有界面调试,可以在pycharm中调试完成后,再用QIGS运行插件
- QGIS插件开发资料较少,模块的方法可以在官方查看:https://qgis.org/pyqgis/master/
PyQGIS插件开发经验相关推荐
- chrome浏览器插件开发经验(一)
chrome浏览器插件开发经验(一) http://open.chrome.360.cn/extension_dev/messaging.html 最近在进行chrome浏览器插件的开发,一些小的经验 ...
- word2007插件开发经验备忘1--如何开发word插件
最近做了word2007的插件开发(VBA开发).虽然还没有完全写完,但是感觉有必要写一些东西了,于是就记录下来.... office的开发分为程序级开发和文档级开发,程序集开发的典型代表就是传说中的 ...
- WOW插件:ShortRobot 1.21 发布(2006.10.3)
下载:http://files.cnblogs.com/simonw/ShortRobot.rar 作者:simonw, [2区 暗影之月 人类牧师 民族英雄] Email::i-simon AT m ...
- 从0到1写一款自动给Markdown标题添加序号的Jetbrains插件
1. markdown-index 最近做了一个Jetbrains的插件,叫markdown-index,它的作用是为Markdown文档的标题自动添加序号,效果如下: 目前已经可以在Jetbrain ...
- Openfire4源码部署到eclipse中并编译
Openfire4源码部署到eclipse中并编译 概述 Openfire是众所周知的基于xmpp协议的IM开源服务,所有操作,配置,监控,调试等以B/S方式进行展示,非常的方便管理员进行管理.它的强 ...
- 黄聪:ThinkSAAS开发文档 常用函数 模版修改
首页 本文档适合任何级别的PHP开发者: 目录 [隐藏] 1 ThinkSAAS开源社区 1.1 快速了解 1.2 下载地址 2 APP组件开发 2.1 入门教程 3 APP插件开发 3.1 入门教程 ...
- 5.20爬虫结——Mu
3852724,最新版墨镜风格模板发布了,有需要的朋友可以进来看看,2759280 3856589,官方手机模板在哪安装,3140684 3856347,手机触摸屏被劫持跳转其它网站,3112842 ...
- discuz_result
命名 discuz_result 3856604,答题注册插件用不了,3140844 3852724,最新版墨镜风格模板发布了,有需要的朋友可以进来看看,2759280 3856589,官方手机模板在 ...
- cocos creator 插件开发
Cocos Creator插件开发经验 这里总结一些creator插件开发的一点小经验,先干为敬!我介绍一些哪些是重点的东西,官网上重复的文档我就不搬了 一:背景 二:需要的知识 三:了解一些小概念 ...
最新文章
- 全方位,多角度理解ThreadLocal
- 撸个注解有什么难的 请看这里
- pycharm的安装和使用
- Ajax — 大事件项目(第二天)
- 语言nomogram校准曲线图_医学统计与R语言:Meta 回归作图(Meta regression Plot)
- linux下java连接mysql_LinuxJava连接MySQL数据库
- Django 静态文件处理
- verilog赋多位值_Verilog入门学习笔记——第一弹
- 全网首发:编译链接错误:对‘vtable for xxxx’未定义的引用
- 从武汉远程医疗方案看,5G战“疫”是噱头还是福音?
- 金额要用BigDecimal,原理分析
- RFID的现状与今后动向 - 2.1 周波数的动向
- OJ 2315 Problem E	Strawberry
- Android通过wifi输出声音,SoundWire – 将手机变成电脑的音箱,通过 WiFi播放电脑内的声音...
- 怀化市2021年高考查询成绩,2021年怀化高考状元是谁分数多少分,历年怀化高考状元名单...
- ☀️光天化日学C语言☀️(01)- 第一个C语言程序 | 万丈高楼平地起
- 又一恐怖技能!卡耐基梅隆大学发布超强智能体,炸翻科研圈
- 作业及管理系统(二)
- 敏捷的诺基亚测试(Nokia Test)
- 强烈建议 | 转行Python最好看一下这篇文章