Creando un plugin simple con el ‘Plugin Builder’ de QGIS en Windows

El ‘Plugin Builder’ es en si mismo un plugin de QGIS que sirve para crear plantillas de nuevos plugins. Por tanto, se instala de la manera usual: Plugins -> Manage and Install Plugins -> Plugin Builder. Una vez instalado, se ubica en el propio menú de Plugins o en su respectiva barra de herramientas para ejecutarlo. La interfase gráfica que aparece es la siguiente:

plugin1

Los campos antes de Recommended Items son obligatorios pero varios de ellos pueden ser modificados desde el archivo de metadata que se genera en el directorio del plugin al hacer click en ‘OK’. El ejemplo que vamos a considerar aquí es similar al que se encuentra en el libro de Gary Sherman (The PyQGIS Programmer’s Guide: Extending QGIS 2.x with Python); pero está adaptado a la consideración de la nueva versión del plugin que es la 2.8.1 (que facilita aún mucho más el proceso de creación y requiere llenar un campo adicional). Corresponde al intento de crear un plugin para obtener las coordenadas de un punto haciendo click con el mouse sobre cualquier zona del Map Canvas (algo que haremos más adelante en otro post).

La información que vamos a rellenar es la siguiente; pero es conveniente que creemos antes un directorio aparte para el desarrollo de plugins y en el cual vamos a guardar el resultado de ejecución de ‘Plugin Builder’:

plugin2

Una vez que hacemos click en ‘OK’, después de ubicar la ruta al directorio de desarrollo de Plugins, aparece el siguiente cuadro de diálogo donde es posible observar la ruta donde se ha creado el plugín, la ruta donde se almacenan los plugins de QGIS y los 7 posibles pasos a realizar de ahora en adelante.

plugin3

El primer paso de la imagen anterior es compilar los recursos mediante el comando pyrcc4. Por ahora, el único recurso que vamos a compilar será una “imagen nueva” para nuestro plugin que sustituirá a la que por defecto viene dada en el directorio del plugin (icon.png); cuyo contenido luce así:

plugin4

La imagen WhereAmI.png (se recomienda que las imágenes tengan el mismo nombre que el plugin) la vamos a colocar en el directorio del plugin y se modificarán los archivos de resources.qrc, metadata.txt y WhereAmI.py para reflejar tales cambios. El resources.qrc (que es de lenguaje de marcado) ahora lucirá así:

<RCC>
    <qresource prefix="/plugins/WhereAmI" >
        <file>WhereAmI.png</file>
    </qresource>
</RCC>

la porción correspondiente del metadata.txt que hemos modificado así:

.
.
.
homepage=
tracker=
repository=
category=Plugins
icon=WhereAmI.png
# experimental flag
experimental=False
.
.
.

y la porción correspondiente del WhereAmI.py así:

.
.
.
   def initGui(self):
        """Create the menu entries and toolbar icons inside the QGIS GUI."""

        icon_path = ':/plugins/WhereAmI/WhereAmI.png'
        self.add_action(
            icon_path,
            text=self.tr(u'WhereAmI?'),
            callback=self.run,
            parent=self.iface.mainWindow())
.
.
.

Para compilar los recursos en Windows y tener a mano todas las herramientas necesarias se recomienda que QGIS se haya instalado mediante el OSGe4W Installer. Por tanto, ubicamos la shell de OSGeo4W, nos cambiamos al directorio donde está el plugin en desarrollo y ejecutamos:

.
pyrcc4 -o resources_rc.py resources.qrc
.

Después de la compilación copiamos la carpeta completa del plugin en la ruta de plugins de QGIS (recuerde que estaba en la ventana de Plugin Builder Results o en su README.txt), lanzamos QGIS y añadimos el plugin con Plugins -> Manage and Install Plugins -> WhereAmI?. Al habilitarlo, con un click sobre su icono tendremos algo parecido a la siguiente imagen:

plugin5

Para lograr que haga algo útil primero tenemos que editarlo con el QtDesigner; tema del próximo post. No obstante, señalaré que este software se ejecuta colocando Designer [Enter] en la shell de OSGeo4W. Una vez que aparezca la interface gráfica, el archivo WhereAmI_dialog_base.ui se carga al Editor, desde el directorio del Plugin, utilizando el menú File -> Open; tal como se presenta en la imagen siguiente:

plugin6

Anuncios
Esta entrada fue publicada en PyQGIS, QGIS, SIG, Software Libre. Guarda el enlace permanente.

9 respuestas a Creando un plugin simple con el ‘Plugin Builder’ de QGIS en Windows

  1. Pingback: Creando un plugin para capturar las coordenadas del Map Canvas con un click del ratón en QGIS | El Blog de José Guerrero

  2. Hola buenas tardes!

    Tengo la versión 2.14 de QGIS y la 2.16.0 de plugin builder y realice todos los pasos y me marca el eror que dice: Este complemento esta roto, No module name resources…?

    alguna sugerencia?

  3. Buenos días,
    He podido realizar la creación del plug-in gracias a este tutorial.
    Investigando un poco he encontrado un plug-in que se adapta mejor a lo que quiero conseguir, que tiene parte de las funcionalidades que necesito.
    Mi problema es el siguiente:
    – No trae un fichero ” .ui ” para poder hacer la modificación del del plug-in existente, al plug-in que quiero conseguir.
    – No trae un fichero resources.qrc, para generar el resources.py. En este caso el resources.py ya esta creado.

    Por lo que entiendo los ficheros ” .ui ” son los ficheros que se pueden abrir desde Qt Designer para poder editarlos.

    ¿Cómo puedo re-compilar mi plugin, y desde que fichero.extension ?
    ¿Cómo genero un fichero ” .ui “?
    Muchas gracias de ante mano.

    • Buenos días,
      muchísimas gracias por contestar.
      He estado mirando los tutos que me has indicado, y para crear mi primer plugins me viene muy bien, estoy tardando un montón ya que no soy ningún experto pero voy sacando adelante el trabajo. El problema es que necesito hacer 4 plugins…….
      Por suerte he encontrado dos que puedo reciclar, hay que programar alguna funcionalidad mas pero solo eso.
      Sin embargo me gustaría por lo menos re compilar los plugins que ya tengo después de cambiar el código, algún logo etc. Los ficheros de uno de ellos son los siguientes:

      __init__.py
      __init__.pyc
      logo_DF.png
      logo_TT.png
      metadata
      plcr_mapas_icon.png
      plcr_ver_mapas.py
      plcr_ver_mapas.pyc
      plcr_ver_mapasDialog.py
      plcr_ver_mapasDialog.pyc
      resources.py
      resources.pyc
      resources_rc.py
      resources_rc.pyc
      Ui_plcr_ver_mapas.py
      Ui_plcr_ver_mapas.pyc

      me ayudarías muchísimo si esto se puede aprovechar, o por lo menos re compilar después de modificar el código o agregar alguna funcionalidad.
      Un abrazo!

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s