| Python-fu para no programadores: Creando scripts en Gimp | ||
|---|---|---|
| Anterior | Capítulo 3. Trabajando con script en Gimp | Siguiente |
Es complicado hacer un script o un programa a la primera sin ningún fallo. Cuando comienzas hacer un script en Python para Gimp lo normal es que primero escribir el script, una vez escrito abres Gimp, lo ejecutas y posiblemente no haga exactamente lo que querías o simplemente se quede parado a la mitad.
Ya hemos hablado con anterioridad que Gimp no nos proporciona ninguna herramienta para poder trabajar en modo debug, por lo tanto poco podemos hacer. A continuación vamos a ver un modo sencillo y rudimentario que nos ayudará a encontrar la línea que nos puede dar problemas. Estos problemas suelen ser:
Nos hemos equivocado al nombrar una función o al usar una variable que no existe
La función usada no existe en la versión de Gimp que estamos usando
Un error de sistaxsis en Python
No hemos importado un módulo en Python que necesitamos
Estos pueden ser algunos de ellos además de ser los más comunes, aunque pueden ser muchos más. La forma con la que vamos a intentar buscar el error no nos dirá cual es el error exacto, simplemente podremos ir comprobando hasta donde nuestro programa funciona correctamente y ver cual es la línea que da el fallo. Luego nosotros tendremos que ver cual es el fallo en esa línea.
Lo primero que tenemos que hacer es preparar el programa. Nos vamos a Gimp y entramos en "Archivo - Diálogos - Consola de Errores". Esto nos abrirá una nueva ventana de diálogo. La idea es usar esta ventana para ir escribiendo texto en ella y así comprobar que hasta donde tengamos ese método todo funciona correctamente. Para escribir en la consola de errores ponemos:
pdb.gimp_message(text): esta función sólo contiene una cadena de texto que será la que aparecerá en la consola de errores
Veamos un ejemplo para verlo todo más claro.
01 >>> #!/usr/bin/env python
02 >>> # Script para Gimp en Python
03 >>> # Realizado por Fco. Javier Pérez Pacheco como ejercicio
04 >>> # para el artículo "Python-fu para no programadores".
05 >>> # Este ejercicio escala una imagen
06 >>> # importamos los módulos necesarios
07 >>> from gimpfu import *
08 >>> # definimos las funciones necesarias
09 >>> def Resize(img, drawable, width, height):
10 >>> # comenzamos a agrupar el UNDO
11 >>> pdb.gimp_image_undo_group_start(img)
12 >>> pdb.gimp_message("Comenzamos a redimensionar")
13 >>> pdb.gimp_image_scale(img, width, height)
14 >>> pdb.gimp_message("La imagen ha sido redimensionada correctamente")
15 >>> # agrupamos UNDO
16 >>> pdb.gimp_image_undo_group_end(img)
17 >>> # función principal
18 >>> if __name__ == '__main__':
19>>> # llamada a función register
20 >>> register(
21 >>> "debug",
22 >>> "Redimensionar imagen",
23 >>> "Redimensionar imagen",
24 >>> "Javi Pacheco",
25 >>> "Javi Pacheco",
26 >>> "2005",
27 >>> "<Image>/Python-Fu/Ejemplos/1- Basico/Redimensionar imagen",
28 >>> "RGB*, GRAY*",
29 >>> [
30 >>> (PF_SPINNER, "width", "Ancho", 200, (0, 1000, 1)),
31 >>> (PF_SPINNER, "height", "Alto", 200, (0, 1000, 1))
32 >>> ],
33 >>> [],
34 >>> Resize)
35 >>> main()
El código de este ejemplo se encuentra en el archivo "debug.py".
Nuestro ejemplo es el mismo que hemos estado viendo hasta ahora pero con un par de línes nuevas, la línea 12 y 14. ¿Qué hemos hecho? Pues antes de escalar la imagen hemos colocado un texto en la consola de error diciendo que estamos preparamos para redimensionar y luego una vez que hemos terminado de redimensionar colocamos otro texto diciendo que la imagen se ha escalado correctamente. Prueba que funciona correctamente este script.
Ahora vamos a provocar un error en él. Abre el archivo "debug.py" y cambia la línea:
>>> pdb.gimp_image_scale(img, width, height)
por:
>>> pdb.gimp_image_escale(img, width, height)
Efectivamente nuestro programa no va a funcionar ya que no existe ninguna función que se llame "gimp_image_escale". Ahora ejecutamos el script y nos daremos cuenta que no funciona y se para. Si nos vamos a la consola de errores sólo ha escrito el primer texto, por lo que sabemos que hasta ese momento nuestro script funcionaba correctamente, y como el segundo texto no aparece, sabemos que el error se encuentra en la línea anterior. Así localizamos el error y podemos ver cual es el problema más fácilmente.