pygtk-demo

以前gtk-demoについて書いたけど、今回はそのpython版のpygtk-demo。

$ pygtk-demo &

で起動する。
あわせて、

$ idle &

python shellを起動しておくと便利。

pygtk-demoは、2ペインで開かれる。左はデモの名前でダブルクリックすると、デモが起動する。右はTABになっていて、Infoはデモの情報だけど、個人的には不要。もう一つのTABのSourceをクリックすると、デモのソースを読むことができる。

早速ソースを実行してみよう。idleの[File]-[New Window]で新しいウィンドウを開き、ソースをコピー&ペーストしてみる。今回はApplication main windowのソースを選択し、真ん中ボタンでペーストする。そして、idleの[Run]-[Run Module]してみる。ファイルを保存するかどうか聞かれるので、適当な名前で保存すると実行できる。

しかし、何も動かない。最初に起動したidleを見ると分かるけど、

    img_dir = os.path.join(os.path.dirname(__file__), 'images')

で__file__が宣言されていないため。デモがインストールされているディレクトリのファイルを指定してあげるとOKなので、

    __file__ = "/usr/lib/pygtk/2.0/demos/appwindow.py"

という行を直前に追加しましょう。実は、このファイルがSourceで表示されるファイルなので、他のアプリからモジュールとして呼び出されるので、__file__が宣言されている環境で実行されることになる。(__file__ってのはモジュールが呼び出されたら、modulename.__file__で見れるんだけど、if __name__ == '__main__':の環境じゃ違うのかな?)

ということで、pygtk-demoも使えるようになった。