Wie werden Druckbefehle über Python Script angezeigt, während das Plugin für QGIS programmiert wird?


12

Gibt es eine Möglichkeit, durch Ausführen eines für QGIS erstellten benutzerdefinierten Plugins eine Python-Shell anzuzeigen, wenn das Plugin ausgeführt wird, wie z. B. ein Debug-Bildschirm? Ich frage dies, um zu wissen, ob es eine Möglichkeit gibt, Druckbefehle über ein Python-Skript anzuzeigen, während ein Plugin für QGIS programmiert wird.


Abgesehen von einem Pyqgis-Tag scheint diese Frage keine Verbindung zu GIS zu haben. Könnten Sie es umformulieren , um zu sagen, warum es Ihrer Meinung nach eher eine GIS-Frage als eine für StackOverflow besser geeignete ist?
PolyGeo

Ich habe bearbeitet, wie wäre es jetzt?
NothingToSay

1
Sieht viel besser aus, aber ich habe Ihren Titel auch in eine Frage verwandelt und einige zusätzliche Tags hinzugefügt, um das richtige Publikum anzulocken.
PolyGeo

Antworten:


13

Sie senden Protokollnachrichten an das QGIS-Protokollfenster mit:

QgsMessageLog.logMessage(message, tag, level)

Tag ist der Titel der Registerkarte, die im QGIS-Protokollfenster angezeigt wird. Level ist die Nachrichtenebene (standardmäßig 0).

Zum Beispiel:

QgsMessageLog.logMessage('My message', 'MyPlugin')

Weitere Informationen finden Sie in der QGIS-API-Dokumentation zu QgsMessageLog.

Das Protokollfenster kann über das Menü Ansicht-> Bedienfeld-> Protokollnachrichten sichtbar gemacht werden.

Die andere Möglichkeit besteht darin, eine Klasse zu erstellen, die stdout erfasst und an ein Protokollfenster in Ihrem Plugin weiterleitet (das Script Runner-Plugin führt dies aus). Die Ausgabe aller Druckanweisungen wird in Ihrem Protokollfenster angezeigt. Diese Methode ist jedoch viel aufwändiger, wenn Sie während der Entwicklung nur einige Meldungen anzeigen möchten. Sie müssen dabei vorsichtig sein, da alle Druckanweisungen von anderen Plugins an Ihr Plugin gesendet werden, es sei denn, Sie erfassen und stellen stdout nach Bedarf wieder her.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.