Mehr

Wie zeige ich Variablenwerte in der Nachrichtenleiste in QGIS an?

Wie zeige ich Variablenwerte in der Nachrichtenleiste in QGIS an?


Ich weiß, dass ich mit dem benutzerdefinierten Text in die Nachrichtenleiste schreiben kannQgsMessageBar.pushMessage()Methode. Aber wenn ich die Dokumentation richtig verstehe, gibt es keinen Platz für Variablen, die einem String hinzugefügt werden, wo sie mit Escapezeichen versehen werden (wie indrucken()-Funktion) und ich erhalte den Fehler "Argumente stimmten mit keinem überladenen Aufruf überein", wenn ich versuche, es so aufzurufen. Ich möchte einige Variablen zum Debuggen meines neuen Plugins drucken. Wie kann ich sie über den GUI-Dialog des Plugins drucken? Wenn die Nachrichtenleiste keine Option ist, wie geht das?

Ich möchte testen, wie das Plugin mit meinen QGIS-Plugin-Steuerelementen interagiert, daher reicht es für mich nicht aus, die Werte in der Python-Konsole zu drucken, obwohl es im Allgemeinen besser zum Debuggen ist.


Mit QgsMessageLog können Sie mit dem üblichen Python variable Interpolation in Strings durchführen%Operator:

>>> QgsMessageLog.logMessage("hallo") >>> x=99 >>> QgsMessageLog.logMessage("x ist %s" % x)

zeigt mir "x ist 99" im Nachrichtenfenster.


Aus der Dokumentation:

pushMessage(const QString &title, const QString &text, MessageLevel level=INFO, int Dauer=0)

Das erste und das zweite Agrument sind also Strings.

Wenn Sie einige Variablen in Ihrem Plugin haben und diese an diese Funktion übergeben möchten, müssen Sie sie in Strings konvertieren.

Zum Beispiel haben wir eine Variable, die Koordinaten enthält und die in einer Nachrichtenleiste angezeigt werden soll:

coords = string(self.coordinates) string = "Koordinaten eines Punktes: " + coords iface.messageBar().pushMessage("Message", string)

Schau das Video: QGIS Python Plugin Builder v3