やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

GIMP Python-fu でgimp.message()が出ない

 ダイアログでなくエラーコンソールなら出た。

情報源

結論

 gimp.message()の内容はエラーコンソールに出せた。

 まずはエラーコンソールを表示する。

  1. GIMP起動
  2. メニュー ウインドウドッキング可能なダイアログエラーコンソール

 次にpython-fuコンソールでメッセージ表示コードを実行する。

  1. メニュー FiltersPython-fuコンソール
  2. 以下コードを入力してEnterする
gimp.message("Hello World")

f:id:ytyaru:20191218085013p:plain

f:id:ytyaru:20191218085022p:plain

 画面右側にあるエラーコンソールに、小さく「Hello World」と表示された。

 なお、以降は上記エラーコンソールを表示しておらず、ダイアログが出ることを期待していた。ダイアログは結局出なかった……。

コード1

  1. GIMP起動
  2. メニュー FilstersPython-fuコンソールクリック
  3. 以下のコードをペーストして実行する
pdb.gimp_message('This is displayed as a message')

 何も表示されない……。

コード2

cd ~/.config/GIMP/2.10/plug-ins
vim gimp_plugin.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# https://qiita.com/am10/items/5c62cda827c405932064
from gimpfu import *

def plugin_main(image, layer):
    gimp.message("Hello World")

register(
    "hello_world",#コマンドラインまたはスクリプトから呼び出す場合のコマンドの名前
    "Show hello world",#プラグインの説明
    "Show hello world(detail)",#プラグインの詳細な説明
    "author",#プラグインの作成者
    "copyright",#プラグインの著作権保有者 (通常は author と同じ)
    "2020/01/01",#著作権の日付
    "helloworld", #メニューの中でプラグインに使用されるラベル
    "RGB*", #プラグインで処理する対象となる画像のタイプex. RGB*, GRAY* など
    [],#引数(型, 名前(プロシージャブラウザに表示される),説明, 初期値)
    [], # 戻り値
#    plugin_main) # メソッド名
    plugin_main,
    menu = "<Image>/Filters/") # 登録するメニュー位置

main()
chmod +x gimp_plugin.py

 実行権限を付与しないとメニュー項目がグレーアウトする。なのでchmodすること。

実行

  1. GIMP起動
  2. メニュー ファイル新しい画像
  3. メニュー Filstershelloworldクリック

 何も出ない……。

調査

 PyGTKが必要らしい。

$ pip search pygtk
PyGTK (2.24.2)                     - Python bindings for GTK
$ pip list | grep gtk
$ 

 ない。入れよう。

pip install PyGTK
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting PyGTK
  Downloading https://files.pythonhosted.org/packages/7c/18/fa4f2de77500dd62a314fd845ff6e903ac2ce551164cb421c5750969f799/pygtk-2.24.0.tar.bz2 (2.4MB)
    100% |████████████████████████████████| 2.4MB 159kB/s 
    Complete output from command python setup.py egg_info:
    ********************************************************************
    * Building PyGTK using distutils is only supported on windows. *
    * To build PyGTK in a supported way, read the INSTALL file.    *
    ********************************************************************
    
    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-Y08u10/PyGTK/

 エラー……。pip3でも同様。

 pipがダメならaptで。

$ apt search PyGTK
...
python-gtk2-dev/stable,stable 2.24.0-5.1 all
  GTK+ bindings: devel files
...
sudo apt -y install python-gtk2-dev
この操作後に追加で 35.0 MB のディスク容量が消費されます。

 入った。しかし実行手順を踏んでも何も表示されず……。

所感

 独自の環境だと勝手がわからない。

対象環境

$ uname -a
Linux raspberrypi 4.19.75-v7l+ #1270 SMP Tue Sep 24 18:51:41 BST 2019 armv7l GNU/Linux