3

实现单选按钮时遇到问题。我知道 CS2 中的单选按钮可能会出现问题,但我不确定我哪里出错了。我怀疑我的括号或逗号放错了位置;但看不到它。谢谢你。

var dlg =
"dialog {text:'Script Interface',bounds:[100,100,300,260]," +
"info: Group { orientation: 'column', alignChildren: 'center'," + 
"radiobutton0:RadioButton {bounds:[50,30,150,40] , text:'layerName0', alignment: 'left' }," +
"radiobutton1:RadioButton {bounds:[50,50,150,90] , text:'layerName1', alignment: 'left'  }}" +
"cancelBTN:Button{bounds:[110,130,190,150] , text:'Cancel' },"+
"processBTN:Button{bounds:[10,130,90,150] , text:'Ok' }}";
var win = new Window(dlg,"radio buttons"); 
win.radiobutton0.value = true;
win.center(); 
win.show();

另一件事:有没有更好的方法来编写 UI 元素,因为这种格式相当难看。

这是有效的基本代码。var dialogBox =“对话框{方向:'列',alignChildren:'中心',\ info:组{方向:'列',alignChildren:'中心',\ rbtn1:RadioButton {文本:'单选按钮1',对齐: 'left'}, \ rbtn2: RadioButton { text: 'Radio Button 2', align: 'left'}, }, }, \ } }";

win = new Window (dialogBox);
win.center(); 
win.show();

我认为单选按钮切换由第 3 行控制,因为注释掉它会阻止单选按钮正常工作。

4

2 回答 2

3

当我运行代码时,它在这一行上抛出了一个错误win.radiobutton0.value = true;Object is undefined。这是因为对话框结构按钮的方式是info窗口内组的一部分。该行应为

win.info.radiobutton0.value = true;

这应该在最初切换 radiobutton0。

如果您不想要,您不必使用资源字符串来制作对话框。可以通过创建对窗口对象(或面板或面板)的引用并使用.add()

例如:

var w = new Window ("dialog");
w.alignChildren = "left";
var radio1 = w.add ("radiobutton", undefined, "Radio Button 1");
var radio2 = w.add ("radiobutton", undefined, "Radio Button 2");
radio1.value = true;
w.show ();

这是我找到的关于 ScriptUI 的最详尽的参考资料。

于 2012-11-16T15:51:10.060 回答
0

这是一个更好的附加版本的对话框,其中单选按钮可以按我的意愿工作。

var w = new Window ("dialog");
w.alignChildren = "left";
var myButtonGroup = w.add ("group");
myButtonGroup.orientation = "column";
myButtonGroup.alignment = "left";
var radio1 = myButtonGroup.add ("radiobutton", undefined, "Radio Button 1");
var radio2 = myButtonGroup.add ("radiobutton", undefined, "Radio Button 2");
myButtonGroup.add ("button", undefined, "OK");
myButtonGroup.add ("button", undefined, "Cancel");
radio1.value = true;
w.center(); 
// w.show ();

if (w.show() == 1)
{
    alert("You picked " + youSelected(myButtonGroup))
}

function youSelected(rButtons)
{
    if (radio1.value == true)
    // radio1 selected
    return radio1.text
    else
    // radio2 selected
    return radio2.text
}
于 2012-11-19T09:55:19.057 回答