Window は他の部品とは違い、例えば梱包の属性を持たないなど、特異性があります。したがって、これを部品とはしないという考えもあります。
| 属性 | 入出力値(単位) | 機能 |
| Deiconify | なし | アイコン状態・隠れ状態から復帰 |
| Iconify | なし | アイコン状態にする |
| Geometry | "WWWxHHH+dX+dY" (ピクセル) | サイズおよび位置 |
| MaxSize | {H, W} (ピクセル) | 最大拡大可能サイズ |
| MinSize | {H, W} (ピクセル) | 最小縮小可能サイズ |
| OverrideRedirect | True, False | Trueの時、枠なしのウインドウ |
| PositionFrom | 部品, {dX, dY}(ピクセル)} | 他の部品から位置を決める |
| State | "normal", "iconic", "withdrawn" | ウインドウの状態 |
| Title | 文字列 | タイトルバーに書く文字列 |
| Withdraw | なし | ウインドウを隠す |
Window の属性
表で属性 Geometry は "幅x高さ+x位置+y位置" という特殊なフォーマットの文字列を要求しますが、関数 ToGeometry を使えば {幅, 高さ, x位置, y位置} から "幅x高さ+x位置+y位置" への変換ができます。
Window にはこれ以外にも特殊な操作が可能です。そのひとつは AdjustWindowGeometry で、Window のサイズを中に梱包された部品の表示に最低必要な大きさに変更するものです。
用法:
AdjustWindowGeometry[Windowシンボル];
Frame は Window の中の様々な部品を整列させて収容する枠です。 また、この枠の立体的な表示や枠および背景の着色などもできます。 例えば
w = Window[];
f1 = Frame[w, Relief -> "raised",
Side -> "left", BorderWidth -> 5];
b11 = Button[f1, Text -> "Frames",
Side -> "top", PadX -> 20, PadY -> 10];
b12 = Button[f1, Text -> "are used",
Side -> "top", PadX -> 20, PadY -> 10];
b13 = Button[f1, Text -> "to align",
Side -> "top", PadX -> 20, PadY -> 10];
f2 = Frame[w, Relief -> "ridge",
Side -> "left", BorderWidth -> 5];
b21 = Button[f2, Text -> "widgets",
Side -> "top", PadX -> 20, PadY -> 10];
b22 = Button[f2, Text -> "in a window.",
Side -> "top", PadX -> 20, PadY -> 10];
f3 = Frame[f2, Relief -> "sunken",
Side -> "top", BorderWidth -> 5,
PadX -> 10, PadY -> 10];
b31 = Button[f3, Text -> "Frames",
Side -> "left", PadX -> 20, PadY -> 10];
b32 = Button[f3, Text -> "can be nested.",
Side -> "left", PadX -> 20, PadY -> 10];
のようにしますと、図のような結果になります。この場合枠の形状は Relief と BorderWidth で決まりますが、デフォルトでは BorderWidth -> 0 なので Relief だけでは何も効果はありません。Frame はいくらでも重ねられます。
Frame の用例
Button の属性を次の表に列挙します。
| 属性 | 入出力値(単位) | デフォルト | 機能 |
| ActiveBackground | 色 | マウスカーソルが上にあるときの背景色 | |
| ActiveForeground | 色 | マウスカーソルが上にあるときの文字色 | |
| Bitmap | 表面にbitmapを表示 | ||
| Command | 式 | ボタン押下時に実行する式 | |
| DisabledForeground | 色 | ||
| Foreground | 色 | "black" | 文字色 |
| FG | 〃 | 〃 | Foreground の略称 |
| Font | フォント | 文字フォント | |
| Text | 文字列 | ボタン表面の表示文字列 | |
| TextVariable | シンボル | ボタン表面の表示文字列を割り当てるシンボル | |
| BorderWidth(BD) | ピクセル | 2 | 境界(立体表示される)の幅 |
| Width | 文字数 | ボタンの幅 | |
| Relief | "flat", "groove", "raised", "ridge", "sunken" | "raised" | 枠の立体形状 |
| TextAnchor | "c", "n", "ne", "e", "se", "s", "sw", "w", "nw", "center" | "c" | 表示テキストを揃える方向 |
| TextPadX | ピクセル | 9 | 表示テキストの左右のすき間 |
| TextPadY | ピクセル | 3 | 表示テキストの上下のすき間 |
| Flash | なし | なし | ボタンを一瞬点滅 |
| Invoke | なし | なし | 割り当てられた Command を実行 |
Buttonの属性
CheckButtonはON/OFFを表わすチェックマーク付のボタンです。 これは Variable -> シンボル で与えられたシンボル(結合変数)に OnValue -> 値 で決められた値が割り当てられると、チェックマークが点灯するようになっています。 それ以外の場合には、たとえその値が OffValue -> 値 で決めた値でなくても、チェックマークは消灯します。 また、結合変数を評価すると、その時点のボタンの状態に応じてOnValue -> 値 または OffValue -> 値 で設定された値を返します。 また、複数の CheckButton が一つの変数を共有する場合は、その評価は最初に定義した CheckButton の状態を返しますが、その変数への値の設定はすべての CheckButton に反映されます。例図は
w = Window[]; b1 = CheckButton[w, Text -> "Linac/BT OK", Variable :> linac]; b2 = CheckButton[w, Text -> "LER OK", Variable :> ler]; b3 = CheckButton[w, Text -> "HER OK", Variable :> her]; b4 = CheckButton[w, Text -> "Belle OK", Variable :> belle]; linac = 1; ler = 0; her = 1; belle = 1;
により作成しました。
図 CheckButtonの用例
| 属性 | 入出力値(単位) | デフォルト | 機能 |
| ActiveBackground | 色 | マウスカーソルが上にあるときの背景色 | |
| ActiveForeground | 色 | マウスカーソルが上にあるときの文字色 | |
| Bitmap | ボタン表面にbitmapを表示 | ||
| Command | 式 | ボタン押下時に実行する式 | |
| DisabledForeground | 色 | ||
| Foreground(FG) | 色 | "black" | 文字色 |
| Font | フォント | 文字フォント | |
| Text | 文字列 | ボタン表面の表示文字列 | |
| TextVariable | シンボル | ボタン表面の表示文字列を割り当てるシンボル | |
| BorderWidth(BD) | ピクセル | 2 | 境界(立体表示される)の幅 |
| Width | 文字数 | ボタンの幅 | |
| Relief | "flat", "groove", "raised", "ridge", "sunken" | "flat" | 枠の立体形状 |
| Variable | シンボル | 結合変数 | |
| OffValue | 数値 | 0 | ボタンが OFF の時に返す値 |
| OnValue | 数値 | 1 | ボタンを ON に設定する値 |
| TextAnchor | "c", "n", "ne", "e", "se", "s", "sw", "w", "nw", "center" | "c" | 表示テキストを揃える方向 |
| TextPadX | ピクセル | 9 | 表示テキストの左右のすき間 |
| TextPadY | ピクセル | 3 | 表示テキストの上下のすき間 |
| Flash | なし | なし | ボタンを一瞬点滅 |
| Invoke | なし | なし | 割り当てられた Command を実行 |
| Deselect | なし | なし | ボタンを OFF にする |
| Select | なし | なし | ボタンを ON にする |
| Toggle | なし | なし | ボタンの状態を反転する |
CheckButtonの属性
RadioButton は他者択一型の選択を行うためのマーク付のボタンです。これは Variable -> シンボル で与えられたシンボル(結合変数)に値が割り当てられると、その値が| Value -> 値 で決められた値に一致する RadioButton のマークが点灯するようになっています。それ以外の場合にはマークは消灯します。また、結合変数を評価すると、その時点のボタンの状態に応じて値を返します。例図は
w = Window[]; b1 = RadioButton[w, Text -> "2 ns spacing", Variable :> sb, Value -> 2]; b2 = RadioButton[w, Text -> "4 ns spacing", Variable :> sb, Value -> 4]; b3 = RadioButton[w, Text -> "6 ns spacing", Variable :> sb, Value -> 6]; sb = 2;
で作成しました。
RadioButtonの用例
| 属性 | 入出力値(単位) | デフォルト | 機能 |
| ActiveBackground | 色 | マウスカーソルが上にあるときの背景色 | |
| ActiveForeground | 色 | マウスカーソルが上にあるときの文字色 | |
| Bitmap | ボタン表面にbitmapを表示 | ||
| Command | 式 | ボタン押下時に実行する式 | |
| DisabledForeground | 色 | ||
| Foreground(FG) | 色 | "black" | 文字色 |
| Font | フォント | 文字フォント | |
| Text | 文字列 | ボタン表面の表示文字列 | |
| TextVariable | シンボル | ボタン表面の表示文字列を割り当てるシンボル | |
| BorderWidth(BD) | ピクセル | 2 | 境界(立体表示される)の幅 |
| Width | 文字数 | ボタンの幅 | |
| Relief | "flat", "groove", "raised", "ridge", "sunken" | "flat" | 枠の立体形状 |
| Variable | シンボル | 結合変数 | |
| Value | 数値 | ボタンを ON にする値 | |
| TextAnchor | "c", "n", "ne", "e", "se", "s", "sw", "w", "nw", "center" | "c" | 表示テキストを揃える方向 |
| TextPadX | ピクセル | 9 | 表示テキストの左右のすき間 |
| TextPadY | ピクセル | 3 | 表示テキストの上下のすき間 |
| Flash | なし | なし | ボタンを一瞬点滅 |
| Invoke | なし | なし | 割り当てられた Command を実行 |
| Deselect | なし | なし | ボタンを OFF にする |
| Select | なし | なし | ボタンを ON にする |
RadioButtonの属性
TextLabelは1行または複数行の文字列を表示するラベルです。その内容は Text -> 文字列 か或いは TextVariable -> シンボル で指定します。後者の場合にはその結合変数の内容が文字列に変換され表示されます。また、文字列の中に "?n" があればそこで改行します。
| 属性 | 入出力値(単位) | デフォルト | 機能 |
| Bitmap | bitmapを表示 | ||
| Foreground(FG) | 色 | "black" | 文字色 |
| Font | フォント | 文字フォント | |
| Justify | "left", "center", "right" | "center" | 行内の語の整列 |
| Text | 文字列 | 表示文字列 | |
| TextVariable | シンボル | 表示文字列を割り当てるシンボル | |
| BorderWidth(BD) | ピクセル | 2 | 境界(立体表示される)の幅 |
| Width | 文字数 | 表示の幅 | |
| Relief | "flat", "groove", "raised", "ridge", "sunken" | "flat" | 枠の立体形状 |
| TextAnchor | "c", "n", "ne", "e", "se", "s", "sw", "w", "nw", "center" | "c" | 表示テキストを揃える方向 |
| TextPadX | ピクセル | 1 | 表示テキストの左右のすき間 |
| TextPadY | ピクセル | 1 | 表示テキストの上下のすき間 |
TextLabelの属性
図 TextLabelの用例
TextMessage は長い文字列を決められた幅でフォーマットしながら表示します。 その内容は Text -> 文字列 か或いは TextVariable -> シンボル で指定します。後者の場合にはその結合変数の内容が文字列に変換され表示されます。
| 属性| 入出力値(単位)| デフォルト| 機能 |
| Aspect | % | 150 | 幅/高さ |
| Foreground(FG) | 色 | "black" | 文字色 |
| Font | フォント | 文字フォント | |
| Justify | "left", "center", "right" | "left" | 行内の語の整列 |
| Text | 文字列 | 表示文字列 | |
| TextVariable | シンボル | 表示文字列を割り当てるシンボル | |
| BorderWidth(BD) | ピクセル | 2 | 境界(立体表示される)の幅 |
| Width | ピクセル | 116 | 表示の幅 |
| Relief | "flat", "groove", "raised", "ridge", "sunken" | "flat" | 枠の立体形状 |
| TextAnchor | "c", "n", "ne", "e", "se", "s", "sw", "w", "nw", "center" | "c" | 表示テキストを揃える方向 |
| TextPadX | ピクセル | 1 | 表示テキストの左右のすき間 |
| TextPadY | ピクセル | 1 | 表示テキストの上下のすき間 |
TextMessageの属性
Entry は文字列をキーボードから入力するための枠です。TextVariable であるシンボルを結合変数に指定することにより、入力された文字列は即座に利用できます。
| 属性 | 入出力値(単位) | デフォルト | 機能 |
| ExportSelection | True, False | True | 選択範囲を X に伝達 |
| Foreground(FG) | 色 | "black" | 文字色 |
| Font | フォント | 文字フォント | |
| InsertBackground | 色 | "black" | 挿入カーソルの色 |
| InsertOffTime | msec | 挿入カーソルの消灯時間 | |
| InsertOnTime | msec | 挿入カーソルの点灯時間 | |
| InsertWidth | ピクセル | 2 | 挿入カーソルの幅 |
| SelectBackground | 色 | "green" | 選択範囲の背景色 |
| SelectForeground | 色 | "black" | 選択範囲の文字色 |
| SelectBorderWidth | ピクセル | 1 | 選択範囲の境界幅 |
| ShowText | 文字 | "" | 内容の代わりに表示する文字 |
| State | "disabled", "normal" | "normal" | disabled = 読み出し専用 |
| XScrollCommand | コマンド | 横方向のスクロールバーの割り当て | |
| Justify | "left", "center", "right" | "left" | 行内の語の整列 |
| TextVariable | シンボル | 入力文字列を割り当てるシンボル | |
| BorderWidth(BD) | ピクセル | 2 | 境界(立体表示される)の幅 |
| Width | 文字数 | 20 | 表示の幅 |
| Relief | "flat", "groove", "raised", "ridge", "sunken" | "sunken" | 枠の立体形状 |
表 Entryの属性
Entry には次の表のような数々の入力編集機能が組み込まれています。
| イヴェント | 機能 |
| "<Button-1>" | 挿入点を指定 |
| "<Control-Button-1>" | 選択範囲を保存して挿入点を指定 |
| "<B1-Motion>" | 選択範囲をドラッグで指定 |
| "<Shift-B1-Motion>" | 選択範囲の境界をドラッグで変更 |
| "<Double-Button-1>" | 1語を選択 |
| "<Triple-Button-1>" "<Control-slash>" | 全体を選択 |
| "<Button-2>" | 挿入点に貼り込む |
| "<B2-Motion>" | 横スクロール |
| "<Left>" "<Control-b>" | カーソルを1文字左 |
| "<Shift-Left>" | カーソルを1文字左、選択範囲を拡張 |
| "<Control-Left>" "<Meta-b>" | カーソルを1語左 |
| "<Control-Shift-Left>" | カーソルを1語左、選択範囲を拡張 |
| "<Right>" "<Control-f>" | カーソルを1文字右 |
| "<Shift-Right>" | カーソルを1文字右、選択範囲を拡張 |
| "<Control-Right>" "<Meta-f>" | カーソルを1語右 |
| "<Control-Shift-Right>" | カーソルを1語右、選択範囲を拡張 |
| "<Home>" "<Control-a>" | カーソルを Entryの開始点に |
| "<Shift-Home>" | カーソルを Entryの開始点に、選択範囲を拡張 |
| "<End>" "<Control-e>" | カーソルを Entryの終点に |
| "<Shift-End>" | カーソルを Entryの終点に、選択範囲を拡張 |
| "<Select>" "<Control-Space>" | (選択範囲を挿入点に合わせる) |
| "<Shift-Select>" "<Control-Shift-Space>" | 選択範囲を挿入点に合わせる |
| "<Control-backslash>" | 全体を消去 |
| "<Delete>" | 左1文字または選択範囲を削除 |
| "<Backspace>" "<Control-h>" | 左1文字を削除 |
| "<Control-d>" | 右1文字を削除 |
| "<Control-w>" | 左1語を削除 |
| "<Meta-d>" | 右1語を削除 |
| "<Condrol-k>" | 終端まで削除 |
| "<Control-x>" | 選択範囲を削除 |
| "<Control-t>" | 文字の並び変え |
表 Entryの入力編集機能
Entryには様々な操作を加えることができます。
次の例は Entryの最も簡単な用例で、その結果は図の様になります。
w = Window[]; f1 = Frame[w]; t1 = TextLabel[f1, Text -> "Username: ", Side -> "left", PadX -> 10, PadY -> 10]; e1 = Entry[f1, TextVariable :> user, Side -> "left", PadX -> 5]; f2 = Frame[w]; t2 = TextLabel[f2, Text -> "Password: ", Side->"left", PadX -> 10, PadY -> 10]; e2 = Entry[f2, TextVariable :> pwd, Side -> "left", PadX -> 5, ShowText -> "*"];
図 Entryの用例
Scaleは槽 trough とその上をすべるスライダーとからなりたっています。槽はある量の可変範囲を、またスライダーはその現在値を表わします。Scaleに結合変数を結び付けておけば、それを通してスライダーの読み出し、設定がともに可能になります。
次の例は Scaleの最も簡単な使用例です。
w = Window[];
s = Scale[w,
From -> -10,
To -> 10,
Length -> 200,
Orient -> "horizontal",
Variable :> v,
Command :> Print[{$Arg, v}]];
ここで From と Toはそれぞれ可変範囲の下限と上限を与えます。 また、Lengthと Orientは Scale全体の長さと向きを指定します。 この場合の結合変数は vで、それはまた、Commandのなかでも引用されています。Commandはスライダーの位置に変化があった場合に実行される式を指定します。また、$Argはこのコマンドが実行される時にスライダーの値として渡されるもので、vと同じ値を持っています。 この例は図のような結果をもたらします。 この例ではスライダーが動かされる度に端末に {-3,-3} のようにスライダーの示す値が印刷されます。
図 Scaleの用例
Scaleにはまた、表のような属性があります。
| 属性 | 入出力値(単位) | デフォルト | 機能 |
| BigIncrent | 数値 | 大ステップの大きさ | |
| Command | コマンド | スライダーが変化した際に実行 | |
| Digits | 正整数 | 値の有効桁 | |
| Foreground(FG) | 色 | "black" | 文字色 |
| Font | フォント | ラベル用フォント | |
| From | 数値 | 下限値 | |
| To | 数値 | 上限値 | |
| Label | 文字列 | ラベル文字列 | |
| Length | ピクセル | 100 | 槽の長さ |
| Orient | "horizontal" "vertical" "vertical" | 槽の向き |
| Resolution | 数値 | 結果はこの値の整数倍 | |
| ShowValue | True, False | True | 値の表示 |
| SliderLength | ピクセル | スライダーの長さ |
| State | "normal" "active" "disabled" |
| TickInterval | 数値 | 0 | ティックの間隔、0でティックなし |
| TroughColor | 色 | 槽の色 | |
| Variable | シンボル | 結合変数 | |
| BorderWidth(BD) | ピクセル | 2 | テキストの境界の幅 |
| Width | ピクセル | 15 | 槽の太さ |
| Relief | "flat", "groove", "raised", "ridge", "sunken" | "flat" | 枠の立体形状 |
表 Scaleの属性
Scaleには次の表に示すいくつかの入力機能が用意されています。
| イヴェント | 機能 |
| "<Button-1>" | 槽をクリックするとスライダーが1ステップ進む |
| "<Control-Button-1>" | スライダーが端まで進む |
| "<Right>" "<Up>" | スライダーが1ステップ増加 |
| "<Control-Right>" "<Control-Up>" | スライダーが1大ステップ増加 |
| "<Left>" "<Down>" | スライダーが1ステップ減少 |
| "<Control-Left>" "<Control-Down>" | スライダーが1大ステップ減少 |
| "<Home>" | スライダーが最上端或いは最左端に移動 |
| "<End>" | スライダーが最下端或いは最右端に移動 |
表 Scaleの入力機能
ScrollBar は他の部品、Entry, ListBox, TextEditor, Canvasなどと一緒に 使われ、スクロール・バーの役目を果たします。 ScrollBarと他の部品との結合法はきわめて単純で、以下のようにします。
physicists =
{"Copernicus", "Galileo Galilei", "Kepler",
"Hooke", "Newton", "Euler", "Lagrange",
"Gauss", "Faraday", "Maxwell", "Boltzmann",
"Lorentz", "Einstein", "Bohr", "Heisenberg",
"Schrodinger", "Pauli", "Dirac", "Fermi"};
w = Window[];
sb = ScrollBar[w, Orient -> "vertical",
Side -> "right", Fill->"y"];
lb = ListBox[w, YScrollCommand :> sb[Set],
Insert -> {"end", physicists},
Side -> "right"];
このように、(1) ScrollBar を先に定義する。(2)結び付けたい部品の中で
スクロールコマンド :> スクロールバーシンボル[Set]
とすればOKです。この場合、スクロールコマンドは YScrollCommand 、 スクロールバーシンボルは sbです。定義する順序を逆にしてはいけません。 なお、ListBoxについては後述します。
ちなみにこの例は次のような結果になります。
図 ScrollBarの用例
ScrollBarの入力機能と属性を表にまとめておきます。
| イヴェント | 機能 |
| "<Button-1>" "<Button-2>" | 矢のクリックでスライダーが1ステップ進む |
| "<B1-Motion>" "<B2-Motion>" | スライダーのドラッグ |
| "<Control-Button-1>" "<Control-Button-2>" | スライダーを端まで動かす |
| "<Up>" "<Down>" | 1行のスクロール |
| "<Control-Up>" "<Control-Down>" | 1画面の上下スクロール |
| "<Left>" "<Right>" | 1単位の左右スクロール |
| "<Control-Left>" "<Control-Right>" | 1画面の左右スクロール |
| "<Home>" | スライダーが最上端或いは最左端に移動 |
| "<End>" | スライダーが最下端或いは最右端に移動 |
表 ScrollBarの入力機能
| 属性 | 入出力値(単位) | デフォルト | 機能 |
| Command | コマンド | (自動設定) | スライダーが変化した際に実行 |
| Jump | {True, False | False | True}:ジャンプ・スクロール |
| Orient | "horizontal" "vertical" | "vertical" | 槽の向き |
| TroughColor | 色 | 槽の色 | |
| BorderWidth(BD) | ピクセル | 2 | 境界の幅 |
| Width | ピクセル | 槽の幅 |
表 ScrollBarの属性
ListBox は文字列の集合から一つまたは複数の要素を選び出すための道具です。 基本的な動作は ListBox 作成時に文字列の集合を渡し、選択の完了後に選ばれた項目を受け取るというものです。 選択は属性 SelectMode の設定によって単数にも複数にもできます。 また、文字列の集合を随時挿入・削除するなど細かい動作も可能です。
SAD では要素の集合体はリストで表わされます。 リストは全体を { と }で囲まれ、要素の間を , で区切って表現します。図の例では、
physicists =
{"Copernicus", "Galileo Galilei", "Kepler",
"Hooke", "Newton", "Euler", "Lagrange",
"Gauss", "Faraday", "Maxwell", "Boltzmann",
"Lorentz", "Einstein", "Bohr", "Heisenberg",
"Schrodinger", "Pauli", "Dirac", "Fermi"};
のように、シンボル physicists に右辺の文字列を要素とするリストを割り当てています。さて、ListBoxに対しては属性 Insertを用いて、
lb = ListBox[w, YScrollCommand :> sb[Set],
Insert -> {"end", physicists},
Side -> "right"];
のようにリスト "physicists"を伝達しています。この例ではリストを一旦シンボル "physicists"に割り当てていますが、もちろん
lb = ListBox[w, YScrollCommand :> sb[Set],
Insert -> {"end",
{"Copernicus", "Galileo Galilei", "Kepler",
"Hooke", "Newton", "Euler", "Lagrange",
"Gauss", "Faraday", "Maxwell", "Boltzmann",
"Lorentz", "Einstein", "Bohr", "Heisenberg",
"Schrodinger", "Pauli", "Dirac", "Fermi"}},
Side -> "right"];
のように直接書き込んでもかまいません。
さて、"Insert"の最初の引き数の"end"は文字列の挿入点を全体の最後にするという意味です。 ListBox ではこのような行の指定は表にある何れかの方法で行うことができます。 例えば、先頭から挿入する場合には 0 を指定します。 ListBoxには4つの選択モード SelectMode("browse", "single", "extended", "multiple")があります。このうち前2者が単数項目の選択、後2者が複数項目の選択です。それぞれのモードでは入力のイヴェントの結合に若干の差異があります。筆者は、通常はこのように4つものモードを使い分ける必要はなく、単に "browse" と "extended"の2者で充分ではないかと思います。ここではとりあえずこの2者の入力機能を説明し、他は参考文献を参照していただくことにします。
| 値 | 意味 |
| 数値 n | 最初から n 行目、先頭 = 1 |
| "active" | 活性化された行 |
| "anchor" | Anchor 指定された行 |
| "end" | 最終行 |
| "@x, y" | 座標が (x, y) に最も近い行 |
表 ListBox の行の指定方法
"browse"モードはデフォルトの選択モードです。 ここでは選択される項目は一つに限られています。
| イヴェント | 機能 |
| "<Button-1>" | クリックした項目を選択・活性化 |
| "<B1-Motion>" | ドラッグで選択項目が移動 |
| "<Shift-Button-1>" | クリックした項目を活性化、非選択 |
| "<Up>" "<Down>" | 活性化項目を1行上下 |
| "<Control-Home>" | 最初の行を選択・活性化 |
| "<Control-End>" | 最後の行を選択・活性化 |
| "<Left>" "<Right>" | 1単位の左右スクロール |
| "<space>" "<Select>" "<Control-slash>" | 活性化した行を選択 |
表 "browse"モードの入力機能
"extended"モードでは任意の複数の項目を選択できます。
| イヴェント | 機能 |
| "<Button-1>" | クリックした項目を選択、選択の起点にする |
| "<B1-Motion>" | 起点からドラッグした範囲を選択 |
| "<Button-Release-1>" | その項目を活性化 |
| "<Shift-Button-1>" | 起点からクリックした項目までの範囲を選択 |
| "<Shift-B1-Motion>" | 起点からドラッグした範囲を連続的に選択 |
| "<Control-Button-1>" | クリックした項目の選択を反転、起点にする |
| "<Shift-B1-Motion>" | 起点からドラッグした範囲を起点と同じ状態にする |
| "<Up>" "<Down>" | 活性化項目を1行上下、起点にする |
| "<Shift-Up>" "<Shift-Down>" | 活性化項目から選択範囲を拡大する |
| "<Control-Home>" | 最初の行を選択・活性化 |
| "<Control-Shift-Home>" | 最初の行までの範囲を選択・活性化 |
| "<Control-End>" | 最後の行を選択・活性化 |
| "<Control-Shift-End>" | 最後の行までの範囲を選択・活性化 |
| "<Left>" "<Right>" | 1単位の左右スクロール |
| "<space>" "<Select>" | 活性化した行を選択 |
| "<Control-slash>" | 全体を選択 |
| "<Control-backslash>" | 選択を解除 |
| "<Escape>" | 直前の選択動作をキャンセル |
表 "extended"モードの入力機能
選択が行われた後に選択された項目を取り出すには
a = リストボックスシンボル[Selection];
とすれば選択項目の番号がリストになって返されます。選択項目が単数の場合でも答えは必ずリストです。番号は最初の項目が 1 です。また、選択された文字列を取り出したいときには
a = リストボックスシンボル[GetText[Selection]];
とすれば、選択された文字列がやはりリストで返ります。また、選択の有無にかかわらず、
a = リストボックスシンボル[GetText[番号]];
とすれば、その番号の文字列が返ります。
ListBox の属性を表に示します。 ここで行の指定は表 ListBoxの行の指定によって行います。
| 属性 | 入出力値(単位) | デフォルト | 機能 |
| BorderWidth(BD) | ピクセル | 2 | 境界(立体表示される)の幅 |
| Delete | 行1 または {行1, 行2} | 行1 または行1 から行2 までを削除 | |
| ExportSelection | True, False | True | 選択範囲を X に伝達 |
| Foreground(FG) | 色 | "black" | 文字色 |
| Font | フォント | 文字フォント | |
| Height | 行数 | 表示の行数 | |
| Relief | "flat", "groove", "raised", "ridge", "sunken" | "sunken" | 枠の立体形状 |
| See | 行 | 指定した行を表示範囲に移す | |
| SelectBackground | 色 | "green" | 選択範囲の背景色 |
| SelectBorderWidth | ピクセル | 1 | 選択範囲の境界幅 |
| SelectForeground | 色 | "black" | 選択範囲の文字色 |
| SelectMode | "browse" "single" "extended" "multiple" | "browse" | 選択モード |
| Select$Clear | 行1 または {行1, 行2} | 行1 または 行1 から行2 の選択を解除 | |
| Select$Set | 行1 または {行1, 行2} | 行1 または 行1 から行2 を選択 | |
| SetGrid | True, False | False | Trueのときサイズの変更に制限 |
| Width | 文字数 | 表示の幅 | |
| XScrollCommand | コマンド | 横方向のスクロールバーの割り当て | |
| XView | 文字位置 | 横方向の表示位置 | |
| YScrollCommand | コマンド | 縦方向のスクロールバーの割り当て | |
| YView | 行数 | 縦方向の表示位置 |
Menuはそのなかにいくつかの menu entry とよばれる部品を貼る枠です。 貼れるものは Button, CheckButton, RadioButton, Separator, と Cascadeです。 このうち、3種類のボタンはこれまで登場した3種類の単独のボタンとほぼ同様の動作をします。Separatorは部品と部品の間の区切りのための部品です。 Cascadeは多段式の Menuの連鎖をつくるための部品です。
MenuButtonはそこに Menuを割り当てることにより、MenuButton を押したときにだけ現われるプルダウン・メニューを実現します。MenuButtonには Button と同じ属性が備わっています。
次の例は MenuButton mb に Menu mnを割り当て、しかる後に mnに各種の部品を追加しています。また、mnに Cascadeされる Menu mn1 は Cascadeが mnに追加される前に定義しておきます。 つまり、mn, mn1, Cascadeの順に定義しないとうまく動作しません。 これは自分が親または子として参照する部品は自分より先に定義されていなければならないという事情によります。
w = Window[];
mb = MenuButton[w, Text -> "MENU"];
mn = Menu[mb, TearOff -> True];
mn1 = Menu[mn, TearOff -> True,
Add -> {
RadioButton[Text -> "Rare",
Value -> 1, Variable :> cook],
RadioButton[Text -> "Medium",
Value -> 2, Variable :> cook],
RadioButton[Text -> "Well-done",
Value -> 3, Variable :> cook]}];
mn[Add] = {
Button[Text -> "Salad"],
Separator[],
Cascade[Text -> "Steak", Menu -> mn1],
Button[Text -> "Fish"],
Separator[],
CheckButton[Text -> "Dessert", Variable :> dessert]};
cook = 1;
dessert = 1;
この例は図のような結果になります。
Menuの属性を表に示します。 表で、「部品番号」とは Menu に貼られた各部品を識別する番号で1始まります。 また、"active" (今、マウスカーソルの置かれているもの)、 "last" (最後の部品)、"@y 座標" (y 座標にある部品) という指定も可能です。
| 属性 | 入出力値(単位) | デフォルト | 機能 |
| BorderWidth(BD) | ピクセル | 2 | 境界(立体表示される)の幅 |
| Delete | 部品番号1 {部品番号1, 部品番号2} | "部品番号1"、或いは"部品番号1 から部品番号2" までの部品を削除する | |
| DisabledForeground | 色 | disabled状態の部品の文字色 | |
| EntryConfigure | {部品番号, 属性 -> 値, ...} | "部品番号の部品の属性を変更する | |
| Font | フォント | 文字フォント | |
| Foreground(FG) | 色 | "black" | 文字色 |
| Invoke | 部品番号 | 部品番号の部品に割り当てられたコマンドを実行する | |
| PostCommand | コマンド | Menuが現われる直前に実行する式 | |
| SelectColor | 色 | "red" | Check, Radioのセレクタの色 |
| TearOff | True, False | False | True の時 TearOff 部品を付加し、メニューをボタンから剥離・移動可能にする |
| YPosition | 部品番号 | 部品番号の部品のスクリーン上の位置を返す |
表 Menuの属性
表の中で TearOff という属性を True (デフォルトは False) にすると図にある様に各メニューの最上部に破線が付加されます。 この破線も一種の部品で、これを選ぶと その Menu が MenuButton から独立したひとつの Window になります。 これはあるメニューを持続的に使用する場合大変便利です。 TearOff が True の場合は TearOff が部品番号 1 となり、他の部品は番号 2 から始まります。
Menuに貼られる部品は対応する単独部品の属性の一部を持っています。 次にそれらを示します。
| 属性 | 入出力値(単位) | デフォルト | 機能 |
| ActiveBackground | 色 | マウスカーソルが上にあるときの背景色 | |
| ActiveForeground | 色 | マウスカーソルが上にあるときの文字色 | |
| Accelerator | |||
| Bitmap | ボタン表面にbitmapを表示 | ||
| Command | 式 | 選択時に実行する式 | |
| Font | フォント | 文字フォント | |
| Foreground(FG) | 色 | "black" | 文字色 |
| Justify | "center" "left" "right" | "center" | テキストの整列 |
| OffValue | 数値 | CheckbuttonがOFFの時の値 | |
| OnValue | 数値 | CheckbuttonをONにする値 | |
| SelectColor | 色 | "red" | チェックマークの色 |
| State | "normal" "active" "disabled" | "normal" | エントリーの状態 |
| Text | 文字列 | ボタン表面の表示文字列 | |
| Underline | 数値 | 下線を付ける文字の位置、0 が最初の文字 | |
| Value | 数値 | RadioButtonをONにする値 | |
| Variable | シンボル | 結合変数 |
表 Menuに貼られる部品の属性
Menu に貼られる部品に属性 Underline -> 文字位置 を指定すると、その位置 (0 を最初の文字とする) の文字に下線が付加されます。そしてメニューが表示されている状態でその文字のキーを打つと、その部品のコマンドが実行されます。また、<space> 及び <Return> キーを打つと、現在選ばれている部品のコマンドが実行されます。さらに <escape> キーはメニューの表示を消します。
OptionMenu はいくつかのメニュー項目の中から一つを選択し、選択されたものの名称をボタン表面に表示するという機能を一度に実現します。次の例
w = Window[];
om = OptionMenu[w, TextVariable -> africananimal,
Its -> {"lion", "giraffe", "zebra",
"hippopotamus", "rhinoceros"}];
africananimal = "giraffe";
は "Its" で指定した文字列のリストの中の一項目が TextVariable で指定した結合変数、"africananimal" に割り当てられます。 そしてその変数の値がボタン表面に図のように表示されます。 また、マウスで選択する際にはメニューが現在の設定値を中心に図のように展開されます。
OptionMenu には MenuButton と同様に、Menu を貼り付けることもできます。また、OptionMenu の属性は "Its" 以外は Button と同じです。
図 OptionMenuの用例