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類型,從而導致這個結果,這一點需要調查。
轉自:http://blog.sina.com.cn/s/blog_6f81de820100x01n.html 轉自:http://hi.baidu.com/zhangrobin/blog/item/d85dd3213756cb7a35a80f4d.html
還有一種選取方法,私以為較復雜,此處附上供參考
首先在popupmenu的string中比分3行寫上a,b,c;保存
在popupmenu的回調函數中寫上如下代碼:
val=get(handles.popupmenu,'Value');
switch val
case 1
x=1
set(handles.popupmenu,'String','a');
case 2
x=2
set(handles.popupmenu,'String',b');
case 3
x=3
set(handles.popupmenu,'String','c');
default
msgbox('出錯','warn');
end
轉自:http://zhidao.baidu.com/link?url=0c4HEs1J4f_d9q6sRkaxsKCg25fpmn_7ylHpBHRYTvurAy8wZepYQI-poeKxFeHaosLt819gdS_j8uFccbd8ta