Ist es möglich, unsere benutzerdefinierte Nachricht in der QGIS-Statusleiste mit Python anzuzeigen?

14

Gibt es eine Möglichkeit, unsere benutzerdefinierte Nachricht mit Python in der Qgis-Statusleiste anzuzeigen? Genau wie bei ArcgisIApplication.statusbar.message(0) = "Please wait..."

so gibt es jede möglichkeit die progressleiste in Qgis anzuzeigen IApplication.progressbar.show()

venkat
quelle

Antworten:

34

Statusleiste

Es gibt iface.mainWindow (). StatusBar (), das eine QStatusBar zurückgibt

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

Bildbeschreibung hier eingeben

MessageBar

Ab QGIS 2.0 gibt es auch QgsMessageBar, mit dem sich unauffällige Meldungen anzeigen lassen

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

Bildbeschreibung hier eingeben

Fortgeschritten

Die Meldungsleiste kann auch jedes QWidget (wie eine QProgressBar ) mit einer Schaltfläche zum Schließen und einer Zeitüberschreitung anzeigen ( im Beispiel 5 Sekunden).

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 )

Bildbeschreibung hier eingeben

Weitere Informationen zu QgsMessageBar finden Sie in dieser Antwort von NathanW . Vielen Dank, dass Sie Curlew darauf hingewiesen haben

Erbe

In der Python-Konsole für QGIS <1.9 wäre es:

qgis.utils.iface.mainWindow().statusBar().showMessage( u"Hello World" )
Matthias Kuhn
quelle
Vielen Dank Matthias ... gibt es eine Option für die Fortschrittsanzeige?
Venkat
In der QgsMessageBar können Sie jede Art von Widget anzeigen. Ich würde nicht wissen, dass dies in der Statusleiste möglich ist.
Matthias Kuhn
Ich bin sehr neu in QGIS und Python. Könnten Sie mir bitte ein Beispiel für QgsMessageBar geben? und was ist die Bedeutung der Verwendung von 'u' Präfix in "Hallo Welt"
venkat
Das Präfix u steht für Unicode-Zeichenfolgen. Es wird auch ohne das funktionieren. Für die QgsMessageBar müssen Sie die aktuelle Entwicklungsversion von QGIS herunterladen oder auf die Veröffentlichung von 2.0 warten.
Matthias Kuhn
3
Sehen Sie auch, wie Nathans antwortet, um ein Widget in die neue Nachrichtenleiste zu verschieben. Gis.stackexchange.com/questions/57067/…
Curlew