我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

本文讨论在qgis插件体系中,如何添加messageBar提示信息,可以用于信息提示或通知。值得一提的是:这些提示之间是并不会相互覆盖的,按照一定的队列关系进行排队提醒。

苏南大叔:qgis插件开发:如何添加messageBar提示信息? - qgis-plugin-messagebar
qgis插件开发:如何添加messageBar提示信息?(图7-1)

本文测试环境:qgis@3.16.14-hannoverwin10。本篇文章的插件基于qgis plugin builder创建,具体的步骤可以参考下面这篇文章:

综述

各大ui组件里面都有这种类似的提示信息组件(不过可不叫messageBar这个名字),一般组成就是:

  • 提示的类型(success或者warning或者error)
  • 提示的时长(几秒或者多少毫秒)
  • 提示的文本内容

那么在qgis的插件体系里面,也是有类似的功能的,这个功能的名字就是:messageBar。举例来说,提示信息的显示时长都设置为5秒,代码如下:

from qgis.core import Qgis
iface.messageBar().pushMessage(msg, "附加文字信息",level=Qgis.Success, duration=5)

苏南大叔:qgis插件开发:如何添加messageBar提示信息? - pushmessage-more
qgis插件开发:如何添加messageBar提示信息?(图7-2)

是不是有点意外,函数原型是个多态。

文字信息参数text

  • 文字信息参数可以分为两部分传入,那么就会进入title+text模式。
  • 文字信息参数就在一个参数内传入的话,那么就会进入单一text模式。

苏南大叔:qgis插件开发:如何添加messageBar提示信息? - qgis-plugin-messagebar-2
qgis插件开发:如何添加messageBar提示信息?(图7-3)

信息级别参数level

这条messagebar的表现形式是由level控制的,通过查看源码可以看到,Qgis.Qgis.MessageLevel.下面一共定义了下面几种类型:SuccessInfoWarningCritical,当然还有个默认的None

苏南大叔:qgis插件开发:如何添加messageBar提示信息? - qgis-plugin-messagebar-3
qgis插件开发:如何添加messageBar提示信息?(图7-4)

  • 这些类型里面没有error,有个Critical
  • 在源代码上看的话,这些levelQgis.Qgis.MessageLevel.上面都有定义,所以两种写法都应该是正确的。

苏南大叔:qgis插件开发:如何添加messageBar提示信息? - qgis-plugin-messagebar-4
qgis插件开发:如何添加messageBar提示信息?(图7-5)

苏南大叔:qgis插件开发:如何添加messageBar提示信息? - qgis-plugin-messagebar-5
qgis插件开发:如何添加messageBar提示信息?(图7-6)

持续时长duration

参数单位是秒,代码显示默认为-1,测试显示并不是,而是3-1表示永久显示。

苏南大叔:qgis插件开发:如何添加messageBar提示信息? - qgis-plugin-messagebar-6
qgis插件开发:如何添加messageBar提示信息?(图7-7)

清空消息队列

重新初始化界面的时候,就可以这么执行:

self.iface.messageBar().clearWidgets()

相关链接

总结

这里就是简单的对qgis插件系统内的提示信息方式进行个小的总结,非常简单。更多的qgis插件开发内容,请关注苏南大叔的系列文章:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   qgis