2012-03-31 39 views
5

Tôi vừa mới bắt đầu học về kịch bản lệnh GIMP bằng Python, và đã tự hỏi, làm thế nào để xuất văn bản ra bàn điều khiển? Tôi đang sử dụng phiên bản 2.7.5 trên Windows 7.Làm cách nào để xuất thông tin vào bàn điều khiển trong tập lệnh python GIMP?

Tôi đã thử chức năng in nhưng không viết bất kỳ điều gì vào bảng điều khiển python-fu hoặc bảng điều khiển dành cho nhà phát triển với GIMP. Có chức năng nào tôi nên sử dụng để thực hiện việc này không? hoặc đây có phải là vấn đề với bản phát hành 2.7.5 không? Tôi tìm thấy một vài đề cập đến "thông điệp gimp" nhưng đó dường như là một chức năng được sử dụng với Đề án (Script-fu)

Cảm ơn!

(cũng đăng tải như một sợi here)

Trả lời

5

Sử dụng:

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

Tuy nhiên ... điều này cho thấy trong Lỗi giao diện điều khiển nếu cửa sổ giao diện điều khiển lên, khác trong một hộp thoại thông báo với một nút OK, chờ đợi cho người dùng thừa nhận. Vì vậy, bạn thực sự có thể sử dụng nó chỉ một lần hoặc hai lần trong kịch bản ...

Ngoài ra còn có

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

Mà đi đến thanh trạng thái (IIRC) và hộp thoại tiến triển plugin, nếu có, nhưng là khá tạm thời.

Bạn cũng có thể sử dụng các câu lệnh in đơn giản cho mục đích gỡ lỗi. Trên Linux, đầu ra của chúng xuất hiện trong terminal mà bạn bắt đầu GIMP, và trên Windows chúng có thể xuất hiện trong gimp-console nếu bạn khởi động GIMP theo cách đó (vì vậy người dùng chung sẽ không nhìn thấy gì trừ khi bạn thực sự nói cho họ biết nơi cần tìm) .

2

In ấn froma python script sẽ chỉ in ra kênh stdout GIMP`s - có thể là trong Windows, bạn phải khởi động GIMP bản thân từ dòng lệnh, thay vì bắt đầu từ menu.

+0

(ít nhất là trên linux :) python print chuyển sang chế độ stdout (ít nhất, với sys.stdout, không còn fd 1); và trong giao diện điều khiển gui python, đi qua đường ống đến cửa sổ; trong một loạt chạy nó đi đến stdout của gimp. GIMP chạy python như một quá trình riêng biệt (không được nhúng); hãy thử điều này: gimp -i --batch-interpreter = python-fu-eval -b 'os nhập; os.system ("ps% s"% os.getpid()); pdb.gimp_quit (1) ' – greggo

6

Chúng tôi có thể chuyển hướng stdout và 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

cảm ơn vì đã giải quyết được vấn đề của tôi. !! – vish

Các vấn đề liên quan