再起動せずに…

さらに、少し手を加えるだけで、ボタンの大きさとテキストを変更できます。


>>> e.Text = "touch me"

《Tips》ここで注目して欲しいのは、アプリケーションを再起動せずに「フィールドのデータ(属性値)を実行時に変更できる」ことです。この特徴は「アジャイル開発」における効果的な処方箋となります。 □

引数は何だっけ…

次に、イベントハンドラー click を追加します。ここで、具体的な引数が分からない(忘れた)という状況を想定します。そのようなときには、次の暫定版が重宝します。

>>> def click(*a): print a
...
>>> e.Click += click

ボタンを押しても反応しませんが、作業を進めるのに必要な情報だけは得られます。

>>> (<System.Windows.Forms.Button object at 0x000000000000002B [System.Windows.Forms.Button, Text: touch me]>, <MouseEventArgs object at 0x000000000000002C>)

この出力 (<...Button...>, <...MouseEventArgs...>) を見ると、2つの引数が必要だと分かります。
《Tips》ここで注目して欲しいのは、マニュアルの記述や曖昧な記憶には頼らずに「メソッド定義に必要な情報をオブジェクト自身から収集できる」ことです。この特徴は「アジャイル開発」における効果的な処方箋となります。□

対話モードで…

インストール(余録を参考)に成功したら、アイコン ipy.exe をダブルクリックすると、対話モードで起動されます。プロンプト >>> が現れたら、始まりの合図です。

IronPython 1.1.1 (1.1.1) on .NET 2.0.50727.1433
Copyright (c) Microsoft Corporation. All rights reserved.
>>> import sys
>>> sys.path.append("c:\\IronPython-1.1.1\\Tutorial")
>>> import winforms
>>> import clr
>>> clr.AddReference("System.Windows.Forms")
>>> from System.Windows.Forms import *
>>> clr.AddReference("System.Drawing")

ここまでは常套句なので(枕詞/呪文を唱える要領で)そのまま入力します。詳細は、他の記事で解説します。
《Note》Swing/Jython と比べて「枕詞が長い」のは、気になります。今後の IronPython に期待したいところです。□
以下のコードは、C# とは似て非なるものですが、.NET プログラマーにとって馴染み深いものも含まれるので、IronPython を始めるときの敷居も低くなるでしょう。

イベントハンドラー

最後に、2つの引数を使って、イベントハンドラー click を再定義します。


>>> e.Click -= click
>>> def click(s, e):
... s = "Text: %s\nSize: %s\n"%(s.Text, s.Size)
... s += "Yes, as happy as happy can be."
... MessageBox.Show(s)
...
>>> e.Click += click

ここで、ボタンを押すと反応して、次のようなウィンドウが現れます。


そこには、変更したボタンの情報が表示されます。このとき、ボタンには新たな機能が付加(拡張)されていることが分かります。
《Tips》ここで注目して欲しいのは、アプリケーションを再起動せずに「メソッドのアクション(操作)を実行時に変更できる」ことです。この特徴は、アジャイル開発用のプログラミング言語に必須な機能のひとつです。□


Previous〈2/5〉Next