2012-03-31 19 views
5

Właśnie zacząłem uczyć się o skryptach Gimpa używając Pythona i zastanawiałem się, w jaki sposób mogę wypisać tekst na konsolę? Używam wersji 2.7.5 na Windows 7.Jak wyprowadzić informacje do konsoli w skrypcie python Gimp?

Próbowałem funkcji drukowania, ale nic nie zapisuję w konsoli python-fu lub konsoli dev, która uruchamia się z Gimpem. Czy jest funkcja, której powinienem użyć, aby to zrobić? lub czy jest to problem z wersją 2.7.5? Znalazłem kilka wzmianek o "gimp-message", ale wydaje się, że jest to funkcja używana w Scheme (Script-fu)

Dzięki!

(również wysłane jako wątek here)

Odpowiedz

5

Zastosowanie:

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

... Jednak to pokazuje w konsoli błąd, jeśli okno konsoli jest gotowy, jeszcze w oknie wiadomości z przyciskiem OK, czekając na potwierdzenie użytkownika. Tak naprawdę można używać go tylko raz lub dwa razy w skrypcie ...

Istnieje również

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

Że idzie na pasku stanu (IIRC) oraz do okna dialogowego postępu wtyczki, jeśli w ogóle, ale jest raczej tymczasowy.

Do celów debugowania można również użyć instrukcji drukowania płaskiego. W Linuksie ich wyniki pojawiają się na terminalu, z którego zacząłeś Gimp, i na Windows mogą pojawić się w konsoli gimp, jeśli uruchomiłeś Gima w ten sposób (więc ogólny użytkownik nie zobaczy niczego, chyba że naprawdę powiesz im, gdzie szukać) .

2

druku skryptu froma Python po prostu wydrukować do GIMP`s kanału stdout - jest możliwe, że w systemie Windows trzeba zacząć sam GIMP z linii poleceń, zamiast rozpoczynać to z menu.

+0

(przynajmniej na Linuksie :) druk Pythona przechodzi na stdout (przynajmniej do sys.stdout, który nie jest już fd 1); oraz w konsoli GUI Pythona, która przechodzi przez potok do okna; w cyklu wsadowym przechodzi do stdouta gima. Gimp uruchamia python jako oddzielny proces (nie osadzony); spróbuj tego: gimp -i --batch-interpreter = python-fu-eval -b 'import os; os.system ("ps% s"% os.getpid()); pdb.gimp_quit (1) ' – greggo

6

Możemy przekierować standardowe wyjście i 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

dzięki za rozwiązanie mojego problemu. !! – vish

Powiązane problemy