Передача данных между функциями и обратными вызовами в MATLAB

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

Например:

В основном графическом интерфейсе я получаю значения из двух текстовых полей из соответствующих обратных вызовов как таковых:

handles.A= str2double(get(handles.textbox1,'string'));  

guidata(hObject,handles)

handles.B = str2double(get(handles.textbox2,'string'));   

guidata(hObject, handles)

то в дополнение к вышесказанному у меня есть третья функция, которая выполняет сложение как таковое:

function addition(handles)    

C= handles.A + handles.B

Однако доступ к третьей функции осуществляется из вспомогательного графического интерфейса пользователя нажатием кнопки следующим образом:

function pushbutton1_Callback(hObject, eventdata, handles)   

main_gui('addition');

Ошибка, которую я получаю, - недостаточно входных аргументов в строке C = handles.A + handles.B, но я не знаю, почему я получаю эту ошибку. Может кто-нибудь помочь мне?


person Ali P    schedule 31.05.2013    source источник


Ответы (1)


Вы вызываете addition без каких-либо входных аргументов. Одним из способов передачи данных между вашими графическими интерфейсами является передача handles.a и handles.b вспомогательному графическому интерфейсу в качестве входных аргументов, а затем их использование в качестве входных аргументов для addition.

В верхней части функции открытия вспомогательного графического интерфейса (subGUI_OpeningFCN) добавьте строки:

handles.a = varargin{1};
handles.b = varargin{2};

Измените вспомогательную функцию GUI pushbutton1_Callback на:

main_gui('addition', handles.a, handles.b);

В main_gui измените addition, чтобы принять два входных аргумента:

addition(handles.a,handles.b)

Затем, также в main_gui, вызовите subGUI следующим образом:

subGUI(handles.a,handles.b);

Обратите внимание, что addition можно определить в отдельном файле m, а не в основном графическом интерфейсе.

person Molly    schedule 31.05.2013