如何创建一个最简单QGIS插件

QGIS插件是扩展QGIS功能的重要方式,通过本文的学习,你将了解QGIS插件的基本结构和创建方法。

插件的最简配置文件及其作用

一个QGIS插件必须包含的三个文件:metadata.txt、__init__.py、plugin_name.py

metadata.txt

插件的元数据文件,用于描述插件的基本信息,如插件名称、版本、作者、插件描述等。在安装插件时,QGIS会读取metadata.txt文件中的信息,用于显示插件的基本信息。

txt 复制代码
[general]
name=pluginName
qgisMinimumVersion=3.0
description=plugin description
version=1.1

各字段含义:

  • name : 插件名称,显示在QGIS插件管理器中的唯一标识
  • qgisMinimumVersion : 最低支持的QGIS版本,确保插件兼容性
  • description : 插件功能描述,帮助用户了解插件用途
  • version : 插件版本号,遵循语义化版本规范

init.py

插件的初始化文件,用于定义插件的入口函数。在插件加载时,QGIS会自动调用__init__.py文件中的函数,用于初始化插件。

python 复制代码
def classFactory(iface):
    from .main import SimplePlugin # main是后面pyton入口的文件名,SimplePlugin是类名
    return SimplePlugin(iface)

main.py

插件的主文件,用于定义插件的主要功能。在插件加载时,QGIS会自动调用main.py文件中的函数,用于初始化插件。

  1. initGui: 指定QGIS插件在QGIS软件中展示图标和位置,以及点击后执行run方法,后面扩展也是接下去写
  1. unload: 是卸载时执行的动作
python 复制代码
from qgis.PyQt.QtWidgets import QDialog, QVBoxLayout, QLabel, QPushButton, QAction
from qgis.core import QgsApplication, QgsVectorLayer, QgsFeature, QgsGeometry, QgsPointXY, QgsProject
from qgis.PyQt.QtCore import Qt
from qgis.PyQt.QtGui import QIcon


class SimplePlugin:
    def __init__(self, iface):
        self.iface = iface
        self.dialog = None
    def initGui(self):
        self.toolbar = self.iface.addToolBar("最简插件")
        self.action = QAction(QIcon(), "最简插件", self.iface.mainWindow())
        self.action.triggered.connect(self.run) 
        self.toolbar.addAction(self.action)
        self.iface.addPluginToMenu("最简插件", self.action)

    def unload(self):
        # 移除工具栏图标和菜单项
        self.iface.removeToolBarIcon(self.action)
        self.iface.removePluginMenu("最简插件", self.action)
        del self.action
        
        # 关闭对话框
        if self.dialog:
            self.dialog.close()
    def run(self):
        if not self.dialog:
            self.dialog = PointCreatorDialog(self.iface, self.iface.mainWindow())
        self.dialog.show()
        self.dialog.raise_()
        self.dialog.activateWindow()
class PointCreatorDialog(QDialog):
    def __init__(self, iface, parent=None):
        super().__init__(parent)
        self.iface = iface
        self.setWindowTitle("最简插件")
        self.setMinimumWidth(300)

安装及实时更改刷新插件

安装

  1. 放置插件 在设置->用户配置->打开当前配置文件夹->找到python/plugins将插件整个文件放在里面

  2. 安装 在QGIS中,选择插件->插件管理器->获取新插件->搜索插件名称->安装

实时更改刷新插件

在QGIS中,安装Plugin Reloader插件,用于实时刷新插件,在插件代码有更改时,选择相应的插件刷新即可

通过以上步骤介绍了如何创建一个最简的QGIS插件,以及如何安装和实时刷新插件。

相关推荐
Mr.Java.6 分钟前
Spring AI MCP Server分布式翻车现场:Streamable协议的甜蜜与危险,以及无状态救赎
java·后端·spring·ai·负载均衡
夕除6 分钟前
spring boot 11
java·spring boot·后端
枕星而眠10 分钟前
C++ String类精讲:从基础用法到进阶底层原理
开发语言·c++·后端·学习方法
念何架构之路16 分钟前
Go pprof性能剖析
开发语言·后端·golang
zhz521416 分钟前
Spring Boot 接入国密实战:传输加密(TLCP)+ 密码加密(SM4)
java·spring boot·后端·国密·sm4
我是一颗柠檬24 分钟前
【JDK8新特性】函数式接口Day2
java·开发语言·后端·intellij-idea
Trouvaille ~24 分钟前
【Redis篇】Redis 安装与启动:快速搭建一个 Redis 环境
数据库·redis·后端·ubuntu·缓存·环境搭建·安装教程
Mahir0827 分钟前
Spring Boot 自动装配深度解密:从原理到自定义 Starter 实战
java·spring boot·后端·自动装配·自定义starter·大厂面试题
Mahir089 小时前
Spring 循环依赖深度解密:从问题本质到三级缓存源码级解析
java·后端·spring·缓存·面试·循环依赖·三级缓存
IT_陈寒13 小时前
Redis缓存击穿把我整不会了,原来还有这手操作
前端·人工智能·后端