2013-07-23 2 views
0

У меня есть переменная d размера 50 x 1 и класс double, который содержит числа. Я пытаюсь включить это в всплывающее меню в графическом интерфейсе Matlab. В настоящее время я делаю это: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')); выводит все числа в одну строковую переменную. Как я могу вывести только одно число, выбранное пользователем во всплывающем меню, чем все присутствующие там значения?

ответ

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)) 

Это будет отображать значение, выбранное пользователем в командной строке.

+0

Я думал больше с точки зрения изменения переменных типов, чем это обходное решение, которое, конечно, отлично работает. Благодаря! – Pupil

Смежные вопросы