matlab的GUI编程中Popupmenu是比较常用的一种控件,如何将popupmenu的选取值读取出来?其中有点陷阱需要注意。正确的方法应该如下:
list=get(handles.popupmenu1,'String');
val1=get(handles.popupmenu1,'Value');
selectedval=str2num(list{val1});
其中的popupmenu1是一个下拉选择框控件。list获取该选择框的全部内容值,是一个列表,例如可能是如下形式的一个列表。
0.01
0.001
0.00001
0.000001
val1得到的是该选择框的选取值的索引,也就是被选取值的位置。假如val1=1,也就是说选择的是列表中第一个值。
list{val1}就获取了上面列表中第一个元素的值,注意这个值表现为一个字符串,也就是'0.01'。
再用str2num()函数将它转换为double值。就得到了数值0.01。
这样可以获得popupmenu1中被选取的值。
注意,上面使用的是list{val1}来获取字符串,而使用list(val1)来取值的时候,可以取得值'0.01',但是使用str2num()函数的时候出错。不知道问题是什么,可能list本身是cell类型,从而导致这个结果,这一点需要调查。