我有一个大小为d
的变量50 x 1
和一个包含数字的类double。我试图将它包含在Matlab GUI的弹出菜单中。我目前正在这样做:
d = cellfun(@num2str, num2cell(handles.zRaw(:)), 'uniformoutput', false);
S.T2pm5 = uicontrol('Style', 'popupmenu', 'BackgroundColor', 'w', 'Parent',...
T2vbox6, 'String', {'Choose a Number', d{:}}, 'value', 1);
但是,使用str2double(get(S.T2pm5, 'value'));
从上面的弹出菜单中进行的任何选择都会将所有数字输出到单个字符串变量中。如何通过弹出菜单仅输出用户选择的单个数字,而不是输出的所有值?
答案 0 :(得分:1)
您可以通过添加同时使用弹出菜单的值和字符串属性的回调来实现。这是一个有效的例子:
创建一个带回调的弹出菜单
T2vbox6 = figure();
handles.zRaw = [10,20,30,40,50];
d = cellfun(@num2str, num2cell(handles.zRaw(:)), 'uniformoutput', false);
S.T2pm5 = uicontrol('Style', 'popupmenu', 'BackgroundColor', 'w', 'Parent',...
T2vbox6, 'String', {'Choose a Number', d{:}}, 'value', 1,...
'callback', @someMenuCallBack);
str2double(get(S.T2pm5, 'value'))
然后定义回调:
function someMenuCallBack(hObj,event)
d = str2double(get(hObj, 'String'));
val = get(hObj,'Value');
disp(d(val))
这将显示用户在命令行中选择的值。