如何在Gimp python脚本中将信息输出到控制台?

如何在Gimp python脚本中将信息输出到控制台?,python,console,gimp,gimpfu,Python,Console,Gimp,Gimpfu,我刚刚开始学习使用Python编写Gimp脚本,想知道如何将文本输出到控制台? 我在Windows7上使用的是2.7.5版 我尝试了print函数,但它没有向python fu控制台或使用Gimp启动的dev控制台写入任何内容。 是否有一个函数我应该用来做这件事?或者这是2.7.5版本的问题? 我发现有几处提到“gimp消息”,但这似乎是Scheme(脚本fu)使用的函数 谢谢 (也作为线程发布)从python脚本打印只会打印到GIMP的stdout频道-在Windows中,您可能必须从命令行启

我刚刚开始学习使用Python编写Gimp脚本,想知道如何将文本输出到控制台? 我在Windows7上使用的是2.7.5版

我尝试了print函数,但它没有向python fu控制台或使用Gimp启动的dev控制台写入任何内容。 是否有一个函数我应该用来做这件事?或者这是2.7.5版本的问题? 我发现有几处提到“gimp消息”,但这似乎是Scheme(脚本fu)使用的函数

谢谢


(也作为线程发布)

从python脚本打印只会打印到GIMP的stdout频道-在Windows中,您可能必须从命令行启动GIMP本身,而不是从菜单启动它。

使用:

pdb.gimp_message('This is displayed as a message')
然而。。。如果控制台窗口打开,则在错误控制台中显示,否则在消息对话框中显示OK按钮,等待用户确认。所以你在脚本中只能使用一到两次

还有

pdb.gimp_progress_set_text('This goes to the status bar')
这会进入状态栏(IIRC)和插件进度对话框(如果有的话),但这只是暂时的


您还可以使用纯打印语句进行调试。在Linux上,它们的输出显示在启动Gimp的终端上,而在Windows上,如果您以这种方式启动Gimp,它们可能会出现在Gimp控制台上(因此,除非您真正告诉用户在哪里查找,否则一般用户将看不到任何内容)

我们可以重定向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()
#/usr/bin/env python
#编码:iso-8859-1
从gimpfu进口*
导入系统
sys.stderr=open('c:\\temp\\gimpstderr.txt','w')
sys.stdout=open('c:\\temp\\gimpstdout.txt','w')
def MyUseFulfilliter(img,drw):
#这些打印已重定向到gimpstdout.txt
打印“hello world”
打印图像
打印drw
#此错误已重定向到gimpstderr.txt
x=0
y=1/x
pdb.gimp\u映像\u撤消\u组\u启动(img)
#这里有有用的代码
pdb.gimp\u图像\u撤消\u组\u结束(img)
登记册(
“有用的过滤器”,
“确实非常有用”,
"",
“MF”,
“GPL”,
"2013",
“/过滤器/照片/有用过滤器”,
“RGB*”,
[],
[],
迈乌塞特)
main()
(至少在linux上:)python打印到stdout(至少到sys.stdout,它不再是fd1);在gui python控制台中,通过管道到达窗口;在批处理运行中,它将进入gimp的标准输出。Gimp将python作为一个单独的进程运行(不嵌入);试试这个:gimp-i--batch解释器=python fu eval-b'import os;系统(“ps%s”%os.getpid());pdb.gimp_退出(1)'