2015-02-09 4 views
0

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

Пример:

gui1.m

function some_ui_OpeningFun(hObject, eventdata, handles, varargin) 

a = 10; 
setappdata(0,'a',a); 

gui2('pushbutton1_Callback'...) %<- to call the function in the second gui 

handles.output = hObject; 

guidata(hObject, handles); 

gui2.m

function pushbutton1_Callback(hObject, eventdata, handles) 

b = getappdata(0,'a'); 
disp(a); 

, поэтому я хочу, чтобы вызвать функцию pushbutton1_Callback от gui2.m.

Я пробовал использовать gui2('pushbutton1_callback',handles,.....), который был указан в комментариях GUID. Но не получилось.

Может ли кто-нибудь сказать мне, как это сделать?

благодарит заранее.

+0

Если вы хотите, чтобы функция была доступна извне, вы должны поместить ее в свой собственный файл и предоставить файлу то же имя, что и функция, в вашем примере 'pushbutton1_Callback.m'. – jadhachem

+0

@jadhachem оба примера выше сделаны из GUIDE, это два примера. Как бы это сделать, если я назову его из другого графического интерфейса. вы хотите сказать, что эти две функции - это НЕ. – Akshay

ответ

0

Если вы хотите получить доступ к GUI (gui2) из другого GUI (gui1), вам нужна ссылка на gui2 в gui1, это может быть сделано несколькими способами; например, потребовав, чтобы указатель фигуры к объекту gui2, если он задан как входной параметр при запуске gui1 (EDIT: при запуске gui1 вы должны запустить его с параметром, например, следующим образом: gui1(f), где f - это указатель на фигуру для фигуры gui2 - вы можете получить эту фигуру, запустив gui2 следующим образом: f = gui2) например добавьте следующую строку после function some_ui_OpeningFun(hObject, eventdata, handles, varargin) -LINE:

handles.othergui = varargin{1}; 

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

otherhandles = guidata(handles.othergui); 
gui2('pushbutton1_Callback',otherhandles.pushbutton1,eventdata,otherhandles); 

Я надеюсь, что это ответ на ваш вопрос!

+0

Нет, не работает. Я пытался это сделать, но получаю Индекс превышает размеры матрицы. 'Ошибка в Neucube> Neucube_OpeningFcn (строка 104) handles.othergui = varargin {1}; Ошибка в gui_mainfcn (строка 221) feval (gui_State.gui_OpeningFcn, gui_hFigure, [], guidata (gui_hFigure), varargin {:}); Ошибка в Neucube (строка 49) gui_mainfcn (gui_State, varargin {:}); ' – Akshay

+0

Я попробовал другие способы него, делая ' Neucube ('pushbutton5_Callback', hObject, данныеСобытия, ручки); ' сейчас проблема в том, что в Neucube под 'pushbutton5_Callback' у меня есть' predict_time_length = str2double (get (handles.predict_time_length, 'string')); 'который получает значение из текстового поля gui.но здесь я получаю сообщение об ошибке после того, как я вызываю его из diff GUI, как показано ниже: – Akshay

+0

Ссылка на несуществующее поле 'predict_time_length'. Ошибка в Neucube> pushbutton5_Callback (строка 136) predict_time_length = str2double (get (handles.predict_time_length, 'string')); % тренировочное обучение Ошибка в gui_mainfcn (строка 96) feval (varargin {:}); Ошибка в Neucube (строка 49) gui_mainfcn (gui_State, varargin {:}); Ошибка в обучении> stop_training_Callback (строка 234) Neucube ('pushbutton5_Callback', hObject, eventdata, handleles); Ошибка в gui_mainfcn (строка 96) feval (varargin {:}); Ошибка в обучении (строка 42) gui_mainfcn (gui_State, varargin {:}); Ошибки в – Akshay

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