创建包含所有必需元素的窗口之后,就会希望使用此窗口执行某些操作。每个控件均可执行由用户操作触发的 MEL 命令或程序。每个控件支持的操作类型均取决于该控件的性质。例如,按钮只有在被按住时才支持命令的执行,而滑块在被拖动时和更改值时均支持命令。有关每个控件支持的回调列表,请参见命令文档。
向按钮附加命令就是一个简单的示例。按住按钮时,以下命令将更改该按钮的标签文本。
window -width 200 -title "Test Window" ExampleWindow5;
columnLayout;
// Create the button.
//
string $button = `button -label "Initial Label"`;
// Add the command.
//
string $buttonCmd;
$buttonCmd = ("button -edit -label \"Final Label\" " + $button);
button -edit -command $buttonCmd $button;
showWindow ExampleWindow5;
window -title "Test Window" -widthHeight 200 100 ExampleWindow6;
columnLayout;
// Create the button.
//
string $button = `button -label "Initial Label"`;
// Add the command.
//
button -edit -command ("changeButtonLabel " + $button) $button;
showWindow ExampleWindow6;
proc changeButtonLabel (string $whichButton) {
string $labelA;
string $labelB;
string $currentLabel;
$currentLabel = `button -query -label $whichButton`;
$labelA = "New Label A";
$labelB = "New Label B";
if ($currentLabel != $labelA) {
button -edit -label $labelA $whichButton;
} else {
button -edit -label $labelB $whichButton;
}
}
通常,控件发出的命令中会作为参数需要控件的值。若要避免在控件的状态更改时对其进行查询,可将其值作为字符串“#1”象征性地嵌入到命令中。控件更改值时,“#1”将在发出命令后替换为控件的实际值。包含多个值的组会将“#2”、“#3”等用作其不同组件的值。例如,包含三个场的浮动场组可在其命令中分别使用“#1”、“#2”和“#3”表示每个场的值。
通常,您会希望通过控件来显示节点的属性的值,并在该属性更改进行更新。达到此目的的最简单方法是使用“attr”版本的控件,即 attrFieldGrp,而不是 floatFieldGrp。如果“attr”命令不存在,则使用 connectControl 命令。