2013-11-08 2 views
1

Я только начинаю узнавать о кнопках, и я застрял. У меня есть два всплывающих меню. Когда пользователь выбирает кнопку. общее количество из каждого всплывающего меню выбирается пользователю. Я получил значения из всплывающего меню, но я не знаю, как вернуть его после нажатия кнопки. Любая помощь с благодарностьюMatlab возвращает текст на кнопке

function pushbutton1_Callback(hObject, eventdata, handles) 

math=0; 

data1 =get(handles.popupmenu1, 'Value') %processing data from first pop up menu 
if data1== 1 
math=1 
elseif data1 == 2 
    math=4 
end 
data2=get(handles.popupmenu2, 'Value') %processing data from second pop up menu 
if data2==1 
    math=math + 5; 
end 
% I tabulated math which is some number. I want to return it back to the user 
in a text outside of the button. 

ответ

2

Есть еще один способ вернуть значение: Вы передаете и храните его в структуре guidata. Для получения подробной информации обратитесь к документации в документах. Один пример из документации:

function My_Callback() 
% ... 
% Get the structure using guidata in the local function 
myhandles = guidata(gcbo); 
% Modify the value of your counter 
myhandles.numberOfErrors = myhandles.numberOfErrors + 1; 
% Save the change you made to the structure 
guidata(gcbo,myhandles) 

Краткое объяснение, как это сделать:

1. получить данные от myhandles = guidata (handle_of_the_figure)

2. добавлять/изменять данные , как и мои ручки. Тест = 123

3. Не забывайте сохранять изменения, иначе они «просто исчезнут», -> используйте guidata (handle_of_the_figure, myhandles)

4. 4. Чтобы проверить его, просто загрузите направляющие далее в другую функцию и ищите изменения!

EDIT

, а перечитывая свой вопрос, пришла мне в голову, что вы, возможно, просто хотите вычисленное значение в пределах обратного вызова, который будет отображаться в другом месте. например, если вы хотите получить значение, проявляющейся в текстовом редактирования UIControl, вы можете использовать:

set(HandleOfTheTextEdit, 'String', num2str(mat)) 
1

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

Выполнение этих действий позволяет добавлять обратные вызовы к пользовательским данным. Я сделал пример here.

+0

+1 для показа чего-то, чего я не знал befor. это некоторое программирование Matlab следующего уровня :) попробует в следующий раз, кажется, полезно для более крупных наборов данных (?) –

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