Processing math: 100%

5 votos

Mantener la programación de interfaz de usuario de un plugin de QGIS

Estoy escribiendo un plugin que interactúa con el software externo (modelos hidrológicos).

Uno de los diálogos que tiene un montón de entradas (parámetros a pasar a la hidrológico de software).

Una vez que el usuario ha configurado todos los parámetros y el cuadro de diálogo se cierra, cuando el mismo cuadro de diálogo se vuelve a abrir todos los parámetros anteriores se han ido y el usuario tiene que escribir de nuevo.

Lo que me gustaría lograr es guardar todas las entradas en el cuadro de diálogo para que el usuario conoce los viejos parámetros añadido.

Plugin QGIS2threejs tiene esta funcionalidad, pero no soy capaz de agregar el código.

Y, también es posible guardar los parámetros de interfaz de usuario (un tipo de captura de pantalla) en un archivo externo para que otro usuario puede cargar y automáticamente todos los campos serán llenados?

Vi esta respuesta, pero no estoy seguro de que me puede resolver mi problema de la misma manera.

6voto

Elliott Maynard Puntos 11

A la derecha, usted necesita usar QSettings para almacenar los valores a través de sesiones de QGIS. QSettings es multi-plataforma, de modo que usted no necesita preocuparse acerca de dónde almacena los datos en Linux, en Windows o en Mac, se gestiona por usted.

Usted necesita llamar a QSettings de esta manera:

from PyQt4.QtCore import QSettings 
settings = QSettings() 

Usted puede utilizar QSettings() cada vez que lo necesite, desde cualquier Python (archivo) el módulo de su plugin.

Para almacenar valores:

settings.setValue( "/myPlugin/currentTab", self.tabWidget.currentIndex() )

Para recuperar los valores:

settings.value( "/myPlugin/raster/path", "", type=str )
settings.value( "/myPlugin/config/layersOff", type=bool )
settings.value( "/myPlugin/currentTab", type=int )

SUGERENCIA: Si el camino que se está utilizando es demasiado largo, puede abrir un bloque como este:

settings.beginGroup( "/myPlugin/config" )

A continuación, asignar/leer varios valores de esta manera:

settings.setValue( "numLayers", n ) # Saved in /myPlugin/config/numLayers
settings.setValue(...)
settings.setValue(...)

Y por último, cierra el bloque:

settings.endGroup()

Como siempre, la mejor manera de llegar a saber cómo hacer el mejor uso de QSettings en un plugin es para leer a la gente de otros plugins.

Además, usted puede echar un vistazo a la API de google docs: http://doc.qt.io/qt-4.8/qsettings.html

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X