12

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

我尝试了打印功能,但它没有向 python-fu 控制台或使用 Gimp 启动的开发控制台写入任何内容。有没有我应该使用的功能来做到这一点?或者这是 2.7.5 版本的问题?我发现了一些“gimp-message”的提及,但这似乎是与 Scheme (Script-fu) 一起使用的函数

谢谢!

(也在这里作为线程发布)

4

3 回答 3

10

我们可以重定向标准输出和标准错误。

#!/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()
于 2013-03-26T13:11:53.450 回答
7

采用:

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 中(因此,除非您真的告诉他们在哪里查看,否则一般用户将看不到任何东西) .

于 2012-04-01T08:10:59.960 回答
2

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

于 2012-03-31T22:56:33.640 回答