Das PyQGIS-Kochbuch erklärt, welche Dateien in QGIS-Plugins häufig vorkommen. Wie Sie dort sehen können, benötigen Sie nur drei Dateien, um ein minimales Plugin auszuführen:
__init__.py
metadata.txt
mainPlugin.py
Die __init__.py
Datei teilt QGIS mit, dass der Plugin-Ordner ein Python-Modul ist. Es muss eine classFactory(iface)
Funktion enthalten , mit der QGIS Ihr Plugin initialisiert und dabei Ihre Haupt-Plugin-Klasse verwendet, die sich in der mainPlugin.py
Datei befindet.
metadata.txt
Hier geben Sie die Metadaten Ihres Plugins an, z. B. den Namen des Plugins, den Autor, die Lizenz, die Version, die Homepage, den Bugtracker und das Repository.
mainPlugin.py
könnte auf andere Weise benannt werden. Dies ist die Datei, auf die verwiesen wird, __init__.py
und enthält die Funktionen, die Sie in Ihrer Frage aufgezählt haben. Ich würde sagen, diese Datei ist der Kern Ihres Plugins.
In Bezug auf den QGIS Plugin Builder empfehle ich Ihnen, die offizielle Dokumentation zu lesen , um eine Vorstellung davon zu bekommen, wie er aufgebaut ist. Ich bevorzuge es eigentlich, ein solches Plugin nicht zu verwenden, da es viele Dinge erzeugt, die Sie nicht wissen möchten, während Sie die Grundlagen der Plugin-Entwicklung lernen.
Ich empfehle Ihnen, von Plugins auszugehen, die Sie vollständig verstehen. Beginnen Sie also mit einer sehr einfachen (sogar minimalen) Plugin-Struktur und fügen Sie Komplexität nur dann hinzu, wenn dies erforderlich ist und wenn Sie die Grundlagen beherrschen.
Auf der anderen Seite werde ich Ihnen sagen, für welche Funktionen Sie aufgezählt haben:
__init__( self, iface )
Dies ist der Konstruktor Ihres Plugins. Wenn QGIS einen Ordner als Python-Plugin erkennt, wird die __init__()
Methode ausgeführt und das Schnittstellenobjekt iface
an Ihr Plugin übergeben, damit es anschließend auf QGIS zugreifen kann.
Sie sollten diese Methode verwenden, um einen Verweis auf iface
(da dies Ihr Einstiegspunkt für QGIS-Komponenten ist) zu speichern und andere Variablen zu initialisieren, die Sie in anderen Funktionen Ihres Plugins verwenden werden.
tr( self, message )
Dies ist eine Python-Funktion zum Abrufen von Übersetzungen von Zeichenfolgen. Natürlich müssen Sie Übersetzungen bereitstellen, aber Sie tun dies in anderen Qt-Dateien (nämlich in .ts-Dateien).
Im Allgemeinen benötigen Sie diese Funktion nur, wenn Sie andere Sprachen als Englisch unterstützen. Für neue PyQGIS-Entwickler hat dies definitiv keine Priorität.
add_action( self )
Dies ist eine Funktion, die ich nur in Plugins gesehen habe, die über QGIS Plugin Builder generiert wurden. Es hilft Ihnen beim Einrichten Ihrer Plugin-GUI. Ich persönlich benutze es nicht in meinen Plugins.
initGui( self )
Dies ist eine Methode zum Einrichten der GUI Ihres Plugins in QGIS. Hier legen Sie fest, ob Sie eine Schaltfläche in der Symbolleiste des QGIS-Plugins, eine benutzerdefinierte Symbolleiste, eine Schaltfläche in einem vorhandenen QGIS-Menü und / oder (nicht empfohlen) ein neues benutzerdefiniertes Menü wünschen.
Dies ist auch ein guter Ort, um SIGNAL / SLOT-Verbindungen zwischen Ihren Plugin-Tasten (oder anderen Steuerelementen) und Ihren Funktionen herzustellen.
unload( self )
Dies ist eine Methode zum Entfernen Ihrer Plugin-Widgets (Schaltflächen, Menüs usw.) aus der QGIS-GUI.
Dies ist auch ein guter Ort, um die angeschlossenen SIGNALE und SLOTS zu trennen initGui( self )
.
run( self )
Dies ist die Hauptmethode Ihres Plugins. Hier geben Sie den Code ein, der ausgeführt wird, wenn der Benutzer auf die Schaltfläche Ihres Plugins klickt. Im Großen und Ganzen rufen Sie zunächst einige Daten aus dem aktuellen QGIS-Projekt ab und bearbeiten, verarbeiten oder berichten dann. Es liegt ganz bei Ihnen.
Wenn Ihr Plugin über ein Dialogfeld verfügt, sollten Sie es auf diese Weise öffnen, damit der Benutzer mit dem Dialogfeld interagieren kann. Die Dialoglogik wird normalerweise in anderen Python-Dateien behandelt, um Ihren Code zu verteilen und die Wartung und Kapselung zu fördern.
Beachten Sie, dass dies run()
kein guter Ort ist, um SIGNAL / SLOT-Verbindungen festzulegen, da diese jedes Mal festgelegt werden, wenn Sie den Dialog Ihres Plugins öffnen und Ihre (SLOT) -Funktionen mehrmals auslösen, wie bei einem ungeraden Verhalten in einem QGIS-Plugin: Meine Funktion ist zweimal ausgelöst .
Der beste Weg, um das Programmieren von QGIS-Plugins zu lernen, ist das Lesen des Quellcodes anderer Plugins. Beginnen Sie mit einfachen und wenn Sie sie beherrschen, fahren Sie mit komplexeren fort.
Ich habe ein (sehr einfaches) Demo-Plugin erstellt , damit Sie verstehen, wie QGIS-Plugins funktionieren. Sie können von hier aus darauf zugreifen . Die README-Datei enthält Installationsanweisungen. Das Plugin informiert Sie über Meldungsfelder darüber, wann jede von Ihnen angeforderte Funktion ausgeführt wird.