ウィジェットの基礎
ウィジェットは GUIKit で構築するGUIの基本コンポーネントである.このチュートリアルでは,ウィジェットの基本的ないくつかの点と,それらがどのように働くかについて説明する.ウィジェットに関するより詳しい情報は「定義構築ブロック」を参照のこと.
Needs["GUIKit`"];これは,3つのボタンが付いたパネルからなる基本的なウィジェットを作る.これは,まだ何も表示しない.
widget = Widget["Panel", {
Widget["Button", {"text" -> "ボタン A"}],
Widget["Button", {"text" -> "ボタン B"}],
Widget["Button", {"text" -> "ボタン C"}] }
];以下で,上記のウィジェットを実行する.これで,パネルがスクリーンに表示されるはずである.
ref = GUIRun[widget]GUIRunの結果はGUIObject式である.これはGUIを実行するハンドルとして使うことができる.
GUIScreenShotはGUIObject式を取り,GUIがスクリーン上でどのように見えるかを示す画像を返す.表示された画像の方が使用中のシステムにとって相応しいかもしれない.
GUIScreenShot[ref]ウィジェットの命名
GUIKit の重要な特徴のひとつはウィジェットに名前を付けられることである.
Needs["GUIKit`"];ref = GUIRun[Widget["Panel", {
Widget["Button", {"text" -> "ボタン A"}],
Widget["Button", {"text" -> "ボタン B"}],
Widget["Button", {"text" -> "ボタン C"}] },
Name -> "MyWidget"
]];GUIInformationはGUIObject式を取り,その内部情報を返す.この例ではGUIObjectからすべての名前付きウィジェットを取り出す.名前はMyWidgetというものひとつしかない.
"WidgetNames" /. GUIInformation[ref]ウィジェットの名前は多くの場所でGUIのスクリプトに使われる.
ウィジェットの特性
特性を通したウィジェットの操作は GUIKit のキーコンセプトである.インターフェース中のウィジェットにどんな特性があるかを見付け,その現行値のクエリを行い,それに変更を加えるのを助けるための特性に基づいた関数がたくさんある.
Needs["GUIKit`"];ref = GUIRun[Widget["Panel", {
Widget["Button", {"text" -> "ボタン A"}, Name -> "button1"],
Widget["Button", {"text" -> "ボタン B"}],
Widget["Button", {"text" -> "ボタン C"}] },
Name -> "MyWidget"
]];"WidgetNames" /. GUIInformation[ref]これは,ダイアログで"button1"によって参照されているウィジェットに使えるすべての特性名のリストを要求している.
"PropertyNames" /. GUIInformation[ref , "button1"]ToStringとToExpressionをSetPropertyValueとともに使ってStringへの変換を含むようにすることができる.あるいは ToStringやToExpressionに見られる一般的なオプショナルの引数を使ってWolfram言語式の値に変換することができる.次はテキスト特性を変換する.新たな値が即座に表示される.
ref @ SetPropertyValue[{"button1", "text"}, "TextChanged"]GUIScreenShot[ref]ref @ PropertyValue[{"button1", "text"}]%//InputFormJ/Link で定義されているように等価のWolfram言語式を自動的に持つ特性値を返すようにすることもできるし,PropertyValueを使って設定することもできる.
ref @ PropertyValue[{"button1", "visible"}]ウィジェットのその他の詳細
名前と特性に加え,ウィジェットにはGUIの作成にとって重要なその他の数多くの特性がある.これらについてはGUIObject参照を使って調べることができる.
Needs["GUIKit`"];ref = GUIRun["Wolfram/Example/AngleDialog"]GUIScreenShot[ref]一意的な文字列名で登録されたインターフェース内のすべてのウィジェットのリストを取り出し,これらのウィジェットインスタンスをこれらの参照名で参照することができる.
"WidgetNames" /. GUIInformation[ref]次は,"inputField"という名前で登録されているウィジェットが使えるすべての特性名を求める.PropertyValue[{"inputField","propertyName"}]およびSetPropertyValue[{"inputField","propertyName"},newValue]を使ってこれらの値のクエリを行ったり設定したりすることができる.
"PropertyNames" /. GUIInformation[ref, "inputField"]InvokeMethod[{"inputField","methodName"},arguments]でこのウィジェットに実行できるメソッド名にどんなものがあるかを見付けることもできるし,文字列パターンを使ってこれらの名前にフィルタを掛けることもできる.
Select["MethodNames" /. GUIInformation[ref, "inputField"],
StringMatchQ[#, "*text*", IgnoreCase -> True]&]これらに加え,イベントが起るたびにWolfram言語コードを実行するのにどんなイベント名が使えるかを BindEvent[{"inputField","eventName"},Script[code]]を使って調べることができる.
"EventNames" /. GUIInformation[ref, "inputField"]