更新GUI中的选定保管箱项目

时间:2014-05-04 11:33:11

标签: matlab user-interface matlab-guide

目前我有一个GUI,其中一旦按下“提交”按钮,则留下空白的下拉菜单将由其他三个值确定的计算值填充。

enter image description here

我已成功找出如何使用此逻辑获取所有值:

temp=get(handles.FSTOPpopmenu,{'String','Value'});
fstop=temp{1}{temp{2}};
if (strcmp(fstop,'Select'))
    fstop = 0;
else
    fstop = str2num(fstop);
end

我只有两个问题,我似乎无法找到答案。

  1. 如何将'空'下拉菜单更新为计算变量(计算变量已经是预定列表中可能的值之一)?

  2. 我如何提出错误,如果我有if语句检查数组中的零数量?弹出框是否足够?

  3. 干杯。

2 个答案:

答案 0 :(得分:1)

至于你的第一个问题,matlab的set命令就是你要找的。文档是here。您可能需要:

MyValueIndex = find(DropDownValues==NewValue);

switch handleToChange

case handles.handle1 
     set(handles.handle1,'Value',MyValueIndex);

case handles.handle2 
     set(handles.handle2,'Value',MyValueIndex);

otherwise
     error('Uh oh!');
end

请注意,MyValueIndex是您想要的下拉框值的索引。使用find命令找到实际值。

问题二更多是一个意见问题,但我认为描述问题的弹出框就足够了。也许添加一个系统蜂鸣声为好的措施!

参考:

http://www.mathworks.com/matlabcentral/answers/22734-resetting-a-pop-up-menu-in-a-gui

http://www.mathworks.com/help/matlab/ref/find.html

http://www.mathworks.com/help/matlab/ref/switch.html

答案 1 :(得分:0)

  1. 对于弹出菜单uicontrol,Value属性确定当前正在显示String属性的哪个元素。获取字符串;将其内容与计算变量进行比较以获得索引;然后将该索引设置为Value属性。如果计算的变量当前不在String中,则将其添加到String中,然后设置Value。 (注意比较时需要将数字与数字或字符串与字符串进行比较,因此您可能需要先进行适当的数据类型转换。)

  2. 使用errordlg