Mais

Obtendo uma lista de nomes de campo QGIS, não incluindo campos ocultos usando PyQGIS

Obtendo uma lista de nomes de campo QGIS, não incluindo campos ocultos usando PyQGIS


Atualmente, para um plugin Python para QGIS 2.8.3, eu obtenho a lista de campos para uma camada usando pendingFields conforme mencionado neste tópico:

fields = self.layer.pendingFields ()

Agora tenho alguns campos ocultos (definidos por meio da guia de campos nas propriedades da camada). Como posso obter uma lista dos campos que não estão ocultos?

Vejo a possibilidade de obter o tipo de edição, mas não tenho certeza para onde ir a partir daqui:

EditType {LineEdit, UniqueValues, UniqueValuesEditable, ValueMap, Classification, EditRange, SliderRange, CheckBox, FileName, Enumeration, Immutable, Hidden, TextEdit, Calendar, DialRange, ValueRelation, UuidGenerator, Photo, WebView, Color, EditorWidgetV2}

O objeto de camada vetorial tem um editorWidgetV2ByName método que permite passar um nome de campo e recuperar o nome do widget de edição como uma string. Por exemplo:

>>> layer.editorWidgetV2ByName ("fieldname") 'Hidden'

Alternativamente, há oeditorWidgetV2método que permite passar um índice de campo:

>>> layer.editorWidgetV2 (0) 'Oculto'

A lista de nomes para diferentes widgets pode ser encontrada com a documentação para setEditorWidgetV2, que por acaso pode ser usado para definir o widget para um campo dado o índice, assim:

>>> layer.setEditorWidgetV2 (0, "Oculto")

Portanto, para obter uma lista de campos que não estão ocultos, você pode usar o seguinte trecho:

fields = [campo para campo em layer.pendingFields () if layer.editorWidgetV2ByName (field.name ()! = "Hidden")]

Assista o vídeo: 1 Configurando Paneles y Barras de Herramientas