mieki256's diary



2017/04/21(金) [n年前の日記]

#1 [gimp][python] Python-Fuのregister関数でハマった

GIMP の Python-Fu について実験していたのだけど。Python-FuスクリプトをGIMPのメニューに登録する際に使う register関数の指定の仕方でハマったり。

巷のサンプルを参考にして打ったつもりが、実行すると「3つの引数が要求されてるのに1つしかきてねえぞ」と延々怒られて。

原因は…。Python-Fuのregister関数には2種類の書き方があって、どちらの書き方にするかでパラメータの記述の仕方も変わってくる、ということを忘れていたせいだった。

以下は、古い書き方。
from gimpfu import *

def my_example_plugin_main(timg, tdrawable, msg):
    """main func."""
    gimp.message("Hello, World: " + msg)

register(
    "python_fu_FUNCTION_NAME",
    "Python-Fu example",
    "help",
    "Your name",
    "Your name",
    "2017/04/20",
    "<Image>/Filters/Languages/Python-Fu/Python-Fu example...",
    "RGB*",      # Alternately use RGB, RGB*, GRAY*, INDEXED etc.
    # params (type, name, description, default [, extra])
    [
        (PF_STRING, "msg", "Text string", 'Hello, world!')
    ],
    # return vals
    [],
    my_example_plugin_main  # function name
)

main()

以下は、新しい書き方。
from gimpfu import *

def my_example_plugin_main(timg, tdrawable, msg):
    """main func."""
    gimp.message("Hello, World: " + msg)

register(
    "python_fu_FUNCTION_NAME",
    "Python-Fu example",
    "help",
    "Your name",
    "Your name",
    "2017/04/20",
    "Python-Fu example...",
    "RGB*",      # Alternately use RGB, RGB*, GRAY*, INDEXED etc.
    # params (type, name, description, default [, extra])
    [
        (PF_IMAGE, "timg", "Input image", None),
        (PF_DRAWABLE, "tdrawable", "Input drawable", None),
        (PF_STRING, "msg", "Text string", 'Hello, world!')
    ],
    # return vals
    [],
    my_example_plugin_main,  # function name
    menu="<Image>/Filters/Languages/Python-Fu"
)

main()

古い書き方は、7つ目の引数で、メニューの登録位置を記述する。パラメータとして、画像(PF_IMAGE)、レイヤー(PF_DRAWABLE) を書かなくても、メイン処理をする関数が呼ばれた際に、自動でその2つが最初の引数として渡される。

新しい書き方は、一番最後に、メニューの登録位置を記述する。パラメータとして画像とレイヤーも含めておかないと、メイン処理をする関数に、画像、レイヤーが渡されない。

ていうかコレ、以前もハマって、メモしてた…。

_mieki256's diary - 画像を斜めにするGIMP-Pythonスクリプトを書いた
_mieki256's diary - GIMPのPython-fuについてメモ

古い書き方と新しい書き方がある、ということはかろうじて覚えてたけど、パラメータの記述も変わるということをすっかり忘れていた…。

ちなみに前回は以下の記事を読んで解決策が分かった模様。ありがたや。

_【Gimp】Pythonによるプラグイン開発 - プログラマーのメモ書き

以上です。

過去ログ表示

Prev - 2017/04 - Next
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project