2013-06-17 3 views
1

Я вызвал всплывающее меню без использования GUIDE, используя следующий код, который хорошо работает:функции обратного вызова для Всплывающего меню в Matlab

figure; 
row=4; 
String =sprintf('Video%d#', 1:row); 
String(end) = []; 
CString=regexp(String , '#' , 'split'); 
uicontrol('style','popupmenu' , ... 
    'String' , CString ,... 
    'Position' , [200,400,12,24]); 

Моя проблема заключается в его функцию обратного вызова, я не могу назначить любую функцию, которая для каких-либо действий, когда я нажимаю любой из его вариантов.

Буду признателен, если кто-нибудь мне поможет.

+0

Если добавить ' «Обратный звонок», «дисп (строки)»' на 'uicontrol' варианты, например, он работает' дисп (строка) 'всякий раз, когда был выбран что-то новое. – pm89

+1

У меня нет ответа на этот Назанин, но если вам все еще нужен ответ, начните щедрость. – ehsun7b

ответ

1

Этот вопрос я нашел, потому что у меня была такая же проблема. Даже если это (на момент написания ответа) более 1 года, я отправляю свое решение, надеясь, что это поможет потомству.

Вы можете получить значение свойства Value вашего всплывающего меню: это в основном позиция в массиве возможных вариантов заполнения вашего всплывающего меню выбранного вами варианта.

Код проще, чем объяснять словами, поэтому приведен пример кода. Просто скопируйте/вставьте этот код в текстовый файл с расширением .m и запустите его в Matlab.

function popupexample 

    % create an empty figure 
    h_fig = figure; 

    % create a popup menu 
    h_popup = uicontrol(... 
     'Style','popupmenu',... 
     'String',{'1st choice','2nd choice','3rd choiche','...and so on'},... 
     'Callback',@mypopup_fcn,... 
     'Units','normalized',... 
     'Position',[0 0.5 1 0.5]); 

    % create a textbox 
    h_textbox = uicontrol(... 
     'Style','edit',... 
     'Units','normalized',... 
     'Position',[0 0 1 0.5]); 

    % the popup callback 
    function mypopup_fcn(hObject,eventdata) 
     my_selection = get(hObject,'Value'); 
     set(h_textbox,'String',my_selection) 
    end 

end