Esta sección cuenta con fragmentos de código para facilitar el desarrollo de complementos.
En el complemento añadir a la initGui()
self.keyAction = QAction("Test Plugin", self.iface.mainWindow())
self.iface.registerMainWindowAction(self.keyAction, "F7") # action1 triggered by F7 key
self.iface.addPluginToMenu("&Test plugins", self.keyAction)
QObject.connect(self.keyAction, SIGNAL("triggered()"),self.keyActionF7)
Para añadir unload()
self.iface.unregisterMainWindowAction(self.keyAction)
El método que se llama cuando se presiona F7
def keyActionF7(self):
QMessageBox.information(self.iface.mainWindow(),"Ok", "You pressed F7")
Desde QGIS 2.4 hay un nuevo API de árbol de capas que permite acceder directamente al árbol de capas en la leyenda. Aquí un ejemplo de cómo alternar la visibilidad de la capa activa.
root = QgsProject.instance().layerTreeRoot()
node = root.findLayer(iface.activeLayer().id())
new_state = Qt.Checked if node.isVisible() == Qt.Unchecked else Qt.Unchecked
node.setVisible(new_state)
def changeValue(self, value):
layer = self.iface.activeLayer()
if(layer):
nF = layer.selectedFeatureCount()
if (nF > 0):
layer.startEditing()
ob = layer.selectedFeaturesIds()
b = QVariant(value)
if (nF > 1):
for i in ob:
layer.changeAttributeValue(int(i), 1, b) # 1 being the second column
else:
layer.changeAttributeValue(int(ob[0]), 1, b) # 1 being the second column
layer.commitChanges()
else:
QMessageBox.critical(self.iface.mainWindow(), "Error", "Please select at least one feature from current layer")
else:
QMessageBox.critical(self.iface.mainWindow(), "Error", "Please select a layer")
El método requiere un parámetro (el nuevo valor para el campo de atributo de los objeto(s) espaciales seleccionados) y puede ser llamado por
self.changeValue(50)