2017/04/21(金) [n年前の日記]
#1 [gimp][python] Python-Fuのregister関数でハマった
GIMP の Python-Fu について実験していたのだけど。Python-FuスクリプトをGIMPのメニューに登録する際に使う register関数の指定の仕方でハマったり。
巷のサンプルを参考にして打ったつもりが、実行すると「3つの引数が要求されてるのに1つしかきてねえぞ」と延々怒られて。
原因は…。Python-Fuのregister関数には2種類の書き方があって、どちらの書き方にするかでパラメータの記述の仕方も変わってくる、ということを忘れていたせいだった。
以下は、古い書き方。
以下は、新しい書き方。
古い書き方は、7つ目の引数で、メニューの登録位置を記述する。パラメータとして、画像(PF_IMAGE)、レイヤー(PF_DRAWABLE) を書かなくても、メイン処理をする関数が呼ばれた際に、自動でその2つが最初の引数として渡される。
新しい書き方は、一番最後に、メニューの登録位置を記述する。パラメータとして画像とレイヤーも含めておかないと、メイン処理をする関数に、画像、レイヤーが渡されない。
ていうかコレ、以前もハマって、メモしてた…。
_mieki256's diary - 画像を斜めにするGIMP-Pythonスクリプトを書いた
_mieki256's diary - GIMPのPython-fuについてメモ
古い書き方と新しい書き方がある、ということはかろうじて覚えてたけど、パラメータの記述も変わるということをすっかり忘れていた…。
ちなみに前回は以下の記事を読んで解決策が分かった模様。ありがたや。
_【Gimp】Pythonによるプラグイン開発 - プログラマーのメモ書き
巷のサンプルを参考にして打ったつもりが、実行すると「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によるプラグイン開発 - プログラマーのメモ書き
[ ツッコむ ]
以上です。