实现单选按钮时遇到问题。我知道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:“中心”,\信息:组{方向:“列”,alignChildren:“中心”,\rbtn1:RadioButton {文本:“ Radio Button 1”,对齐:“ left”},\rbtn2:RadioButton {文本:'Radio Button 2',align:'left'},},},\}}“;
win = new Window (dialogBox);
win.center();
win.show();
我认为单选按钮的切换受第3行控制,因为注释掉会使单选按钮正常工作。
当我运行代码时,它在此行上引发了错误win.radiobutton0.value = true;
对象未定义。这是因为使对话框结构化的方法是窗口内info
组的一部分。该行应显示为
win.info.radiobutton0.value = true;
最初应该将单选按钮0切换为打开。
如果不需要,您不必使用资源字符串即可制作对话框。可以通过创建对窗口对象(或调色板或面板)的引用并使用.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 ();
This is the most thorough reference on ScriptUI that I've found.
这是一个对话框的更好的加法版本,其中单选按钮可以按我希望的方式工作。
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
}