是否可以使用python在QGIS状态栏中显示我们的自定义消息?


14

有什么方法可以使用python在Qgis状态栏中显示我们的自定义消息吗?就像在arcgis中一样IApplication.statusbar.message(0) = "Please wait..."

像这样,在Qgis中有没有显示进度条的选项 IApplication.progressbar.show()

Answers:


34

状态栏

iface.mainWindow()。statusBar()返回QStatusBar

iface.mainWindow().statusBar().showMessage( u"Hello World" )

在此处输入图片说明

留言栏

从QGIS 2.0开始,还有QgsMessageBar,它能够显示不显眼的消息

iface.messageBar().pushInfo(u'My Plugin says', u'Hey there')

在此处输入图片说明

高级

消息栏还可以显示带有关闭按钮和超时(示例中为5秒)的任何QWidget(例如QProgressBar)。

from PyQt4.QtGui import QProgressBar
from qgis.gui import QgsMessageBar
msgBar = iface.messageBar()

pb = QProgressBar( msgBar )
msgBar.pushWidget( pb, QgsMessageBar.INFO, 5 )

msg = msgBar.createMessage( u'Hello World' )
msgBar.pushWidget( msg, QgsMessageBar.WARNING, 5 )

在此处输入图片说明

NathanW可以在此答案中找到有关QgsMessageBar的更多信息。如何在Python中解决新的“已完成任务”的QgsMessageBar? 感谢您指出Curlew

遗产

在QGIS <1.9的python控制台中,它将是:

qgis.utils.iface.mainWindow().statusBar().showMessage( u"Hello World" )

非常感谢Matthias ..进度栏是否有其他选择?
venkat 2013年

在QgsMessageBar中,您可以显示任何类型的小部件。我不知道这在状态​​栏中是可能的。
Matthias Kuhn

我对qgis和python还是很陌生。.能给我QgsMessageBar的例子吗?在“ Hello world”中使用“ u”前缀的含义是什么
venkat 2013年

u前缀用于unicode字符串。没有这个也可以。对于QgsMessageBar,您必须获得QGIS的当前开发版本或等待2.0的发布。
Matthias Kuhn

3
另请参见Nathans关于如何将小部件推到新消息栏的答案gis.stackexchange.com/questions/57067/…–
Curlew
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.