2012-03-31 7 views
5

Ho appena iniziato a conoscere Gimp scripting usando Python e mi chiedevo, come faccio ad inviare il testo alla console? Sto usando la versione 2.7.5 su Windows 7.Come faccio ad inviare informazioni alla console in uno script Gimp Python?

Ho provato la funzione di stampa, ma non scrive nulla sulla console python-fu o sulla console di sviluppo che si avvia con Gimp. Esiste una funzione che dovrei usare per fare questo? o si tratta di un problema con la versione 2.7.5? Ho trovato alcune menzioni di "gimp-message" ma sembra essere una funzione usata con Scheme (Script-fu)

Grazie!

(pubblicato anche come un filo here)

risposta

5

Usa:

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

Tuttavia ... questo dimostra nella console di errore se la finestra della console è in su, altrimenti in una finestra di messaggio con un pulsante OK, in attesa di conferma dell'utente. Così si può davvero usare solo una o due volte nello script ...

C'è anche

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

che va alla barra di stato (IIRC) e alla finestra di avanzamento plug-in, se del caso, ma è piuttosto temporaneo.

È anche possibile utilizzare le istruzioni di stampa normale per scopi di debug. Su Linux il loro output si presenta nel terminale da cui hai avviato Gimp, e su Windows possono apparire in gimp-console se hai avviato Gimp in questo modo (quindi l'utente generale non vedrà nulla a meno che tu non dica loro realmente dove guardare) .

2

stampa di script python froma sarà solo stampare su canale stdout GIMP`s - è possibile che in Windows è necessario avviare GIMP dalla riga di comando, invece di iniziare dal menu.

+0

(almeno su linux :) la stampa in pitone va a stdout (almeno a sys.stdout, che non è più fd 1); e nella console gui python, che va via pipe alla finestra; in un batch run va allo stdout di gimp. Gimp esegue python come processo separato (non incorporato); prova questo: gimp -i --batch-interpreter = python-fu-eval -b 'import os; os.system ("ps% s"% os.getpid()); pdb.gimp_quit (1) ' – greggo

6

Siamo in grado di reindirizzare stdout e 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

grazie per aver risolto il mio problema. !! – vish