Tkinter と py2exe
〜 python で Windows アプリケーションを作成 (1) 〜
2006-01-20 作成 福島
TOP > tips > python-tkinter
Tkinter の bind とイベントシーケンス

私は Microsoft が嫌いです。
規則性の無いバグを安易に作り出して放置する人たちを、無責任で能力が低いと評価せざるを得ません。
何より、そのために利用者の時間が浪費されるのが我慢できません。
Microsoft の製品を特定用途以外で使うと、TCO (Total Cost of Ownership) は削減できないのです。

しかし、そうは言っても多くのエンドユーザは Windows しか使えないわけで、今のところ Windows という GUI+DOS に代わる OS は無いのが現状です。
無知で学ぶ気の無い奴はコンピュータに触らなければ良いのに、世の中がそうなっていないわけです。
そんなわけで、馬鹿な Microsoft ともう少し付き合わないといけません。
ならばせめてもと、少しでも Microsoft のために割く時間を短くするための努力がこれです。

私は、高いお金を出して MS-VisualStudio を購入しましたが、分かりにくいマニュアルと頻発するバグには辟易しているのです。
MS-VisualStudio を操作せずに Windows の GUI アプリケーションをお金を出さず作成する手段がここにあります。

Windows アプリケーションを最高の状態でリリースしたい向きはどうぞ MS-VisualStudio をお使いください。

pythonダウンロードページ から python-2.4.2 をダウンロードし、インストール
インストーラ立ち上げ直後。
みんなが使えるようにするか、自分だけにするかを選択します。

インストールディレクトリを選択。
デフォルトは C:\Python24\ です。

インストールするパッケージを選択。
今はデフォルトのままにします。

ファイルのコピーやショートカットの作成が済めばインストールの終了です。
を押してダイアログを閉じます。

環境変数を編集
検索パスを編集して python を起動しやすくします。
マイコンピュータ - プロパティ(R) をたどると「システムのプロパティ」が開きます。
「詳細」タブの を押すと環境変数のダイアログが開きます。


下段に「システム環境変数(S)」があるので Path を選択して を押します。

変数値(V): の最後に ;C:\Python24 を追加して を押します。
; (セミコロン) は検索パスの区切り文字です。忘れずに記入します。
C:\Python24 は python-2.4.2 のインストールで指定したディレクトリです。

コマンドプロンプトを開いて python を実行したところです。
検索パスを指定したのでディレクトリを指定しなくても python が起動します。

なにはともあれ Hello world.

python-2.4.2 には Tkinter (Python 用の GUI ライブラリ) が付属しています。
これを使うと手軽に GUI プログラムを作成できます。
C:\>
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
python
import sys, Tkinter
w = Tkinter.Tk()
t = w.title("Hello world.")
l = Tkinter.Label(w, text = "Hello world.")
l.pack()
b = Tkinter.Button(w, text = "OK", command = sys.exit)
b.pack()
w.mainloop()
l = Tkinter.Label(w, text = "Hello world.")
l.pack()
は 1 行にまとめて Tkinter.Label(w, text = "Hello world.").pack() と書くことも可能



py2exe のインストール

py2exe を利用すると、作成したスクリプトを実行ファイルの形にすることができ、
python をインストールしていない Windows でもプログラムが動作できるようになります。
(※作成したプログラムを配布しないなら不要です)

以下では「コンパイル」という言葉を使っていますが、出力されるオブジェクトはネイティブコードではありません
動作はあくまでもインタプリタです。

py2exe からたどって py2exe-0.6.3.win32-py2.4.exe をダウンロードし、インストール
py2exe インストーラ立ち上げ直後。
クレジットが表示されています。
を押して次へ。

必要とする python インタプリタの選択画面。
Python 2.4 がインストールしてあるので、それが選択されています。
この py2exe は Python 2.4 用なので問題ありません。
デフォルトのまま を押します。

インストールはすぐに終わります(十数秒程度)。早すぎてスクリーンキャプチャできませんでした。
.\samples\ ディレクトリの中にサンプルがあると書いてあります。
(C:\Python24\Lib\site-packages\py2exe\samples\ を指しています)
を押してダイアログを閉じます。


py2exe を実行 (コンパイル)

py2exe の設定ファイルを作成 (サンプルに従って setup.py とします)
setup.py
from distutils.core import setup
import py2exe
setup(windows=["target.py"])
target.py はコンパイルの対象となる python のスクリプトファイルです。当然、任意のファイル名となります。
target.py を元にコンパイルすると target.exe という実行ファイル (メインプログラム) が出来上がります。
GUI アプリケーションを作成したいので windows=... と記述しています。コンソールアプリケーションの場合は console=... となります。
実行ファイルの作成
C:\>python.exe setup.py py2exe
カレントディレクトリに自動的に .\build\, .\dist\ という 2 つのディレクトリが作成されます。
このうち dist の中が目的の実行ファイル (群) です。
.\dist\target.exe を実行します。

.\build\ は削除しても構いませんが、.\dist\ の中は全て必要です。
上記 "Hello world." は 8MB 弱の大きさになります。(zip すると 4MB 弱になりました)
python24.dll (インタプリタ本体) が 2MB 弱なので、どんなに小さく作ってもフロッピー 1 枚に収まることは無いでしょう。

※py2exe は Tkinter よりも wxPython を前提としている風に見受けられます。
(GUI のサンプルは wxPython 用、pygame は当然 SDL 用でした)


コンパイル環境が整ったところで、実際に簡単な GUI アプリケーションを作成してみましょう。
Tkinter の bind とイベントシーケンス へ GO。