Mehr

Wo ist die QGIS-API-Aktion für "Auswahl aufheben"?

Wo ist die QGIS-API-Aktion für


Wo ist die QGIS-Aktion für die Schaltfläche "Auswahl aufheben" in der Symbolleiste "Attribute"? Ich sehe diese Aktion in der QgisInterface-Klasse nicht oder erkenne sie nicht am Namen. Fehlt sie in iface?

Ich möchte diese Aktion direkt in einem Plugin anstelle der Schaltfläche in der Symbolleiste verwenden.


Sie können die Attribute-Symbolleiste abrufen und durch ihre Aktionen (Schaltflächen) iterieren, bis Sie die "Auswahl aufheben" erhalten. Dann kannst du es auslösen.

Versuchen Sie dies in Ihrer QGIS Python-Konsole:

für a in iface.attributesToolBar().actions(): if a.objectName() == 'mActionDeselectAll': a.trigger() break

In QGIS 3.4 mit Python Console ist auch

iface.activeLayer() vlayer.removeSelection()

Ich steckte bei dem gleichen Problem fest. Ich fand in http://docs.qgis.org/testing/en/docs/pyqgis_developer_cookbook/vector.html#selecting-features

layer.setSelectedFeatures([])

es wird nur eine leere Liste auswählen und so die Auswahl löschen.


Ich denke, das removeSelection-Ding funktioniert auch!

legend=iface.legendInterface()layer=legend.layers() für Layer inlayer():layer.removeSelection()

Brute force ;-) Eine neue Auswahl überschreibt die alte. Dann deaktivieren Sie einfach die Auswahl, indem Sie nichts auswählen.

for layer_id in QgsMapLayerRegistry.instance().mapLayers(): layer = QgsMapLayerRegistry.instance().mapLayer(layer_id) layer.setSelectedFeatures([feat.id()  for feat in layer.selectedFeaturesIterator() if feat.id() < 0])

Vielleicht gibt es eine differenziertere Methode, aber sie funktioniert.


Für QGIS 3 wird es sein

layer.deselect(feature_id_here)

https://qgis.org/pyqgis/3.10/core/QgsVectorLayer.html?highlight=deselect#qgis.core.QgsVectorLayer.deselect


Schau das Video: QGIS Shape-Datei erstellen, digitalisieren und Bearbeiten. Deutsch. German