qgis插件开发:如何添加删除按钮动作?
发布于 作者:苏南大叔 来源:程序如此灵动~

最近在研究qgis
插件,偶尔有点小小结论,在这边做一些总结。本篇教程就说一下,如何添加一个工具栏图标,并定义事件。从已知的信息来说,qgis
插件能做的事情有点多(意思是有点超出插件的边界了)。如果大家做这方面的开发的话,估计也会有类似的感受的。

本文测试环境:qgis@3.16.14-hannover
,win10
。本文项目代码基于qgis
插件qgis plugin builder
创建。详见如下链接:
最佳方案
在builder
生成的默认代码里面,有个add_action
的函数,
调用这个函数是最明智的选择,具体的含义可以参考下面的函数分解。

调用这个函数生成的按钮,在unload
的时候,会自动删除,并不需要做任何的销毁操作。这是因为在unload()
里面,对self.actions
进行遍历,然后挨个尝试remove()
。而对self.actions
的添加操作,正是在上述add_action()
中进行添加的。

在qgis
插件里面,一个菜单或者一个图标,这都叫做action
。无法理解...
函数动作分解
相关代码理论上来说,放在哪里执行都可以。一般来说,放在<项目名>.py
文件中的initGui()
函数里面比较合适。这些代码和addAction()
函数里面也并不一致,仅作理解上使用。

添加按钮到工具栏的代码如下:
顶部import
部分
初始化一个按钮,并关联事件iconAction
添加到工具栏

添加到系统菜单

对应的事件函数
iconAction()
:
删除这个按钮
一般定义在unload()
函数里面:
特殊情况
图片路径请写这种动态的绝对地址,如果图片没有找到的话,会使用tip
文字来代替图片。

出现了多个重复的图标按钮,那是因为在unload()
里面没有删除图标的代码。
相关链接
- https://newsn.net/say/qgis-plugin.html
- https://www.osgeo.cn/qgisdoc/docs/pyqgis_developer_cookbook/cheat_sheet.html#toolbars
总结
图标显示出来之后,还是需要去定义相关action
,才能具体完成逻辑业务。更多qgis
插件开发文章,请点击苏南大叔的博客:


