代码片段
本节以代码段为特色,以方便插件开发。
如何通过快捷键调用方法
在initGui()添加:
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)
在unload()
中添加:
self.iface.unregisterMainWindowAction(self.key_action)
按下CTRL + I时调用的方法:
def key_action_triggered(self):
QMessageBox.information(self.iface.mainWindow(),"Ok", "You pressed Ctrl+I")
如何切换图层
在图例中有一个用于访问图层的API。这是一个切换活动层可见性的示例
root = QgsProject.instance().layerTreeRoot()
node = root.findLayer(iface.activeLayer().id())
new_state = Qt.Checked if node.isVisible() == Qt.Unchecked else Qt.Unchecked
node.setItemVisibilityChecked(new_state)
如何访问所选Feature的属性表
def change_value(value):
"""Change the value in the second column for all selected features.
:param value: The new value.
"""
layer = iface.activeLayer()
if layer:
count_selected = layer.selectedFeatureCount()
if count_selected > 0:
layer.startEditing()
id_features = layer.selectedFeatureIds()
for i in id_features:
layer.changeAttributeValue(i, 1, value) # 1 being the second column
layer.commitChanges()
else:
iface.messageBar().pushCritical("Error",
"Please select at least one feature from current layer")
else:
iface.messageBar().pushCritical("Error", "Please select a layer")
该方法需要一个参数(所选Feature的第二个字段的新值),可以通过以下方法调用
changeValue(50)
下一个
前一个
©版权所有2002-现在,QGIS项目 最近更新于2020年4月3日09:14。
使用Sphinx使用Read the Docs提供的主题构建。