Тут зібрано фрагменти коду, які будуть корисні під час розробки плаґінів.
Додайте в 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)
Та до unload()
self.iface.unregisterMainWindowAction(self.keyAction)
Метод, що викликається після натискання F7
def keyActionF7(self):
QMessageBox.information(self.iface.mainWindow(),"Ok", "You pressed F7")
Починаючи з QGIS 2.4 доступне нове API, яке дозволяє отримати доступ до елементів легенди. Нижче наведено приклад перемикання видимості поточного шару
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")
Метод приймає один параметр (нове значення атрибута) та викликається так
self.changeValue(50)