Sé que es posible asociar una capa con una interfaz de usuario personalizada para editar atributos de características utilizando la interfaz QGIS. ¿Pero es esto posible con Python?
Este enlace muestra cómo lograr el resultado manualmente . Pero me gustaría poder crear capas automáticamente y hacer que usen una interfaz de usuario personalizada sin tener que redefinir el archivo y el método de interfaz de usuario cada vez.
Respuestas:
Diseño de formulario
Tiene los siguientes métodos para hacer esto:
QgsVectorLayer.setEditForm ('/ path / to / your / ui / file') para proporcionar un archivo UI y QgsVectorLayer.setEditFormInit ('python.Function') para proporcionar un método de inicio de Python
Entonces, tener un QgsVectorLayer
vl
lo siguiente hará lo que está buscandoA partir de QGIS 2.0 también tendrá:
QgsVectorLayer.setEditorLayout (QgsVectorLayer :: EditorLayout)
Proporcionar
QgsVectorLayer.GeneratedLayout
,QgsVectorLayer.TabLayout
oQgsVectorLayer.UiFileLayout
para especificar qué tipo de diseño que desee. Esto le permite especificar el nuevo diseñador de arrastrar y soltar (TabLayout).Diseño de widget
Actualización: a partir de QGIS 2.4 habrá nuevos métodos ( QgsVectorLayer.setEditorWidgetV2 y setEditorWidgetV2Config ) para cambiar un tipo de widget de editor y su configuración. El método descrito aquí seguirá funcionando pero está marcado como obsoleto.
Hay varios métodos relacionados con los widgets específicos que desea utilizar:
Use QgsVectorLayer.setEditType (fieldIdx, editType) para especificar el tipo de edición que desea usar para el widget para el índice de campo fieldIdx. editType es uno de estos .
Para configurar aún más el comportamiento del widget, utilice los siguientes métodos (dependiendo de las opciones de configuración del widget disponibles, por supuesto):
fuente
setEditForm
,setEditFormInit
ysetEditorLayout
no están en desuso. Sólo los métodos relacionados widget de (setEditType
,valueMap
,widgetSize
etc.) a excepción desetFieldEditable
ysetLabelOnTop
.