2012-03-31 16 views
5

私はちょうどPythonを使ってGimpスクリプトについて学習し始めました。そして、コンソールにテキストをどのように出力するのでしょうか? Windows 7でバージョン2.7.5を使用しています。Gimpのpythonスクリプトで情報をコンソールに出力するにはどうすればいいですか?

私は印刷機能を試しましたが、python-fuコンソールやGimpで起動する開発コンソールには何も書きません。 これを行うために必要な機能はありますか?またはこれは2.7.5リリースの問題ですか? 「gimp-message」という言葉がいくつか見つかりましたが、Scheme(Script-fu)で使用される関数のようです。

ありがとう!

(もスレッドhereとして掲載)

答えて

5

使用:コンソールウィンドウには、ユーザーの承認を待って、他のOKボタンでメッセージダイアログで、アップしている場合

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

しかし...これはエラーコンソールに表示されます。だから、本当に

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

があれば、ステータスバー(IIRC)にし、プラグインの進行状況ダイアログに行くこともあります...スクリプト内でのみ一度か二度

を、それを使用することができますが、むしろ一時的です。

プレーン・ステートメントは、デバッグの目的で使用することもできます。 Linuxでは、Gimpを起動した端末にその出力が表示され、WindowsではGimpを起動するとgimp-consoleに表示されることがあります(実際にどこに表示するかは分かりませんが一般ユーザーは表示されません) 。

2

印刷fromaのPythonスクリプトは、ちょうどGIMP`s標準出力チャネルに出力します - 代わりの出発、WindowsのコマンドラインからGIMP自体を開始する必要がある可能性ありそれはメニューから。

+0

(少なくともLinuxの場合:) python printはstdoutに行きます(少なくとも、sys.stdoutはfd1になりません)。 gui pythonコンソールでは、パイプを経由してウィンドウに移動します。一括して実行すると、gimpのstdoutに移動します。 Gimpは別のプロセスとしてPythonを実行します(埋め込まれていません)。これを試してください:gimp -i --batch-interpreter = python-fu-eval -b 'import os; os.system( "ps%s"%os.getpid()); pdb.gimp_quit(1) ' – greggo

6

stdoutと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

私の問題を解決してくれてありがとう。 !! – vish

関連する問題