16.2. Codesnippers
Hint
De codesnippers op deze pagina hebben de volgende import nodig als u buiten de console van PyQGIS bent:
1from qgis.core import (
2 QgsProject,
3)
4
5from qgis.gui import (
6 QgsOptionsWidgetFactory,
7 QgsOptionsPageWidget
8)
9
10from qgis.PyQt.QtCore import Qt
11from qgis.PyQt.QtWidgets import QMessageBox, QAction, QHBoxLayout
12from qgis.PyQt.QtGui import QIcon
Dit gedeelte behandelt codesnippers om de ontwikkeling van plug-ins te faciliteren.
16.2.1. Hoe een methode aan te roepen met een sneltoets
Voeg in de plug-in aan de initGui()
toe
self.key_action = QAction("Test Plugin", self.iface.mainWindow())
self.iface.registerMainWindowAction(self.key_action, "Ctrl+I") # action triggered by Ctrl+I
self.iface.addPluginToMenu("&Test plugins", self.key_action)
self.key_action.triggered.connect(self.key_action_triggered)
Voeg aan unload()
toe
self.iface.unregisterMainWindowAction(self.key_action)
De methode die wordt aangeroepen wanneer op CTRL+I wordt gedrukt
def key_action_triggered(self):
QMessageBox.information(self.iface.mainWindow(),"Ok", "You pressed Ctrl+I")
16.2.2. Interface voor plug-in in het dialoogvenster Opties
U kunt een aangepaste tab voor plug-ins Opties toevoegen aan
. Dit heeft de voorkeur boven het toevoegen van een specifiek item voor het hoofdmenu voor opties van uw plug-in, omdat het alle instellingen voor de toepassing QGIS behoudt en instellingen voor de plug-in op één enkele plaats staan, wat gemakkelijk is voor gebruikers om te ontdekken en te navigeren.De volgende snipper zal slechts een blanco tab voor de instellingen voor de plug-in toevoegen, die u kunt vullen met alle opties en instellingen, specifiek voor uw plug-in. U kunt de volgende klassen splitsen in verschillende bestanden. In dit voorbeeld voegen we twee klassen toe aan het hoofdbestand mainPlugin.py
.
1class MyPluginOptionsFactory(QgsOptionsWidgetFactory):
2
3 def __init__(self):
4 super().__init__()
5
6 def icon(self):
7 return QIcon('icons/my_plugin_icon.svg')
8
9 def createWidget(self, parent):
10 return ConfigOptionsPage(parent)
11
12
13class ConfigOptionsPage(QgsOptionsPageWidget):
14
15 def __init__(self, parent):
16 super().__init__(parent)
17 layout = QHBoxLayout()
18 layout.setContentsMargins(0, 0, 0, 0)
19 self.setLayout(layout)
Tenslotte voegen we de imports toe en passen de functie __init__
aan:
1from qgis.PyQt.QtWidgets import QHBoxLayout
2from qgis.gui import QgsOptionsWidgetFactory, QgsOptionsPageWidget
3
4
5class MyPlugin:
6 """QGIS Plugin Implementation."""
7
8 def __init__(self, iface):
9 """Constructor.
10
11 :param iface: An interface instance that will be passed to this class
12 which provides the hook by which you can manipulate the QGIS
13 application at run time.
14 :type iface: QgsInterface
15 """
16 # Save reference to the QGIS interface
17 self.iface = iface
18
19
20 def initGui(self):
21 self.options_factory = MyPluginOptionsFactory()
22 self.options_factory.setTitle(self.tr('My Plugin'))
23 iface.registerOptionsWidgetFactory(self.options_factory)
24
25 def unload(self):
26 iface.unregisterOptionsWidgetFactory(self.options_factory)
Tip
Aangepaste labels toevoegen aan een dialoogvenster voor vector laag-eigenschappen
U kunt een soortgelijke logica toepassen om de aangepaste optie voor de plug-in toe te voegen aan het dialoogvenster voor de laageigenschappen met de klassen QgsMapLayerConfigWidgetFactory
en QgsMapLayerConfigWidget
.