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も使えるようになった。