IronPythonいぢり

最近買ってみたPythonクックブック第2版より、IronPythonの例を試してみて面白かったので紹介してみる。

まずIronPythonってのはPython言語の.NETへの実装のこと。.NETってのは正式には.NETフレームワークといって、マイクロソフトが開発したアプリケーション開発、実行環境のこと。

Wikipedia:.NET Framework

で、その面白いと思ったプログラムはこれ:

# coding:shift-jis

# .NET専用の下準備
import clr
clr.AddReferenceByPartialName("System.Windows.Forms")
clr.AddReferenceByPartialName("System.Drawing")
# .NETの利用
from System.Windows.Forms import *
from System.Drawing import *
from System.Drawing.Imaging import *
form = Form(Text="Window Fade-ins with IronPython",
            HelpButton=False, MinimizeBox=True, MaximizeBox=True,
            WindowState=FormWindowState.Maximized,
            FormBorderStyle=FormBorderStyle.Sizable,
            StartPosition=FormStartPosition.CenterScreen,
            Opacity = 0)
#チェッカー模様のパターンを作る
box_size = 25
image = Bitmap(box_size * 2, box_size * 2)
graphics = Graphics.FromImage(image)
graphics.FillRectangle(Brushes.Black, 0, 0, box_size, box_size)
graphics.FillRectangle(Brushes.White, box_size, 0, box_size, 50)
graphics.FillRectangle(Brushes.White, 0, box_size, box_size, box_size)
graphics.FillRectangle(Brushes.Black, box_size, box_size, box_size, box_size)
form.BackgroundImage = image
# 半透明度を調整するコントロールを作る
opacity_tracker = TrackBar(Text="Transparency", 
                          Height = 0, Dock = DockStyle.Bottom,
                          Minimum = 0, Maximum = 100, Value = 0,
                          TickFrequency = 10, Enabled = False)
def tracker_opacity_change(sender, event):
    form.Opacity = opacity_tracker.Value / 100.0
opacity_tracker.ValueChanged += tracker_opacity_change
# タイマを生成してウィンドウの外見をアニメーションさせる
timer = Timer()
timer.Interval = 30
def tick(sendr, event):
    val = opacity_tracker.Value + 1
    if val >= opacity_tracker.Maximum:
        # 半透明度が最大になったら、アニメーションを一時停止させる
        # その後はユーザが半透明度を自由に設定できるようにする
        opacity_tracker.Value = opacity_tracker.Maximum
        opacity_tracker.Minimum = 20   # ウィンドウが消えてしまわないようにする
        opacity_tracker.Enabled = True
        timer.Stop()
    else:
        opacity_tracker.Value = val
timer.Tick += tick
timer.Start()
form.ShowDialog()

このプログラムを実行するにはまずPython本体とIronPythonをインストールする。

Python本体:http://www.python.org/
IronPythonhttp://www.codeplex.com/IronPython/

Python本体は省略。
IronPythonをインストールする。そしてあらかじめどこでもいいから上のプログラムを分かりやすい名前をつけて保存しておく(ここではipytest.py)。次にコマンドプロンプトから下のようにIronPythonの保存先のディレクトリに移動して、プログラムを実行すると・・・、

c:\Documents and Settings\necoffee\>d:
d:\>cd ironpython-1.1
d:\IronPython-1.1>ipy.exe "d:\ipytest.py"

わーお、模様が浮かび上がってくるー。瞬きしないでディスプレイをじっと見てると奇妙な気分になります><



Python クックブック 第2版

Python クックブック 第2版