2012-03-31 18 views
5

Acabo de empezar a aprender sobre scripting Gimp usando Python, y me preguntaba, ¿cómo puedo enviar texto a la consola? Estoy usando la versión 2.7.5 en Windows 7.¿Cómo obtengo información en la consola en una secuencia de comandos python Gimp?

Probé la función de impresión, pero no escribe nada en la consola python-fu ni en la consola de desarrollo que se inicia con Gimp. ¿Hay alguna función que deba usar para hacer esto? o es esto un problema con la versión 2.7.5? Encontré algunas menciones de "gimp-message" pero esa parece ser una función utilizada con Scheme (Script-fu)

¡Gracias!

(también publicado como un hilo here)

Respuesta

5

Uso:

pdb.gimp_message('This is displayed as a message') 

Sin embargo ... se nota en la consola de error si la ventana de la consola se ha terminado, los demás en un mensaje de diálogo con un botón Aceptar, a la espera de confirmación del usuario. Por lo que realmente puede utilizar sólo una vez o dos veces en el guión ...

También hay

pdb.gimp_progress_set_text('This goes to the status bar') 

que va a la barra de estado (IIRC) y para el diálogo de progreso plugin, si los hay, pero es bastante temporal

También puede usar declaraciones de impresión simple para depuración. En Linux, su salida aparece en la terminal desde la que inició Gimp, y en Windows pueden aparecer en gimp-console si comenzó Gimp de esa manera (para que el usuario general no vea nada a menos que realmente les diga dónde buscar) .

2

impresión guión froma pitón se acaba de imprimir en canal de salida estándar GIMP`s - es posible que en Windows hay que empezar GIMP misma desde la línea de comandos, en lugar de partida desde el menú.

+0

(al menos en Linux :) la impresión de python va a stdout (al menos, a sys.stdout, que ya no es fd 1); y en la consola gui python, que va a través de una tubería a la ventana; en una ejecución por lotes va a Stdout de Gimp. Gimp ejecuta python como un proceso separado (no incrustado); intente esto: gimp -i --batch-interpreter = python-fu-eval -b 'import os; os.system ("ps% s"% os.getpid()); pdb.gimp_quit (1) ' – greggo

6

Podemos redirigir stdout y stderr.

#!/usr/bin/env python 
# coding: iso-8859-1 

from gimpfu import * 
import sys 
sys.stderr = open('c:\\temp\\gimpstderr.txt', 'w') 
sys.stdout = open('c:\\temp\\gimpstdout.txt', 'w') 

def MyUsefulFilter(img, drw): 

    # these print redirected to gimpstdout.txt 
    print 'hello world' 
    print img 
    print drw 

    # this error redirected to gimpstderr.txt 
    x = 0 
    y = 1/x 


    pdb.gimp_image_undo_group_start(img) 
    # useful code here 
    pdb.gimp_image_undo_group_end(img) 


register(
    "useful_filter", 
    "very useful indeed", 
    "", 
    "MF", 
    "GPL", 
    "2013", 
    "<Image>/Filters/Photo/Useful Filter", 
    "RGB*", 
    [], 
    [], 
    MyUsefulFilter) 

main() 
+0

gracias por resolver mi problema. !! – vish

Cuestiones relacionadas