2012-04-18 2 views
3

Я новичок в программировании GUI для MATLAB, поэтому мой вопрос связан с этим.Matlab: получение значения дескриптора GUI из функции обратного вызова при вызове другой функцией

Предположим, что я создаю GUI с GUIDE. В функции создания

MyGUI_OpeningFcn(hObject, eventdata, handles, varargin) 

я вызвать другую функцию,

SamplingRate_Callback(handles.SamplingRate, eventdata, handles) 

определяется как

function SamplingRate_Callback(hObject, eventdata, handles) 

SamplingRate_Callback устанавливает несколько переменных,

handles.a = 1; 
handles.b = 2; 
handles.c = 3; 

handles ул ructure правильно обновляется в функции SamplingRate_Callback. Проблема, которую я имею, что если я не изменить функцию

function handles = SamplingRate_Callback(hObject, eventdata, handles), 

Я не могу вернуть данные в вызывающую функцию, MyGUI_OpeningFcn. Я пробовал использовать guidata(gcf, handles) и guidata(hObject, handles), но не работает.

Вы могли бы пролить свет на эту проблему?

Кроме того, я не уверен, когда следует использовать guidata(gcf, handles) против guidata(hObject, handles).

Благодарим за помощь!

ответ

0

Как вы звоните SamplingRate_Callback в свою MyGUI_OpeningFcn функцию? Мне кажется, что вы не определили возвращаемые значения, которые в этом случае будут values.

Исправление было бы что-то вроде этого:

function [handles] = SamplingRate_Callback(hObject, eventdata, handles) 

И тогда вы могли бы назвать SamplingRate_Callback из MyGUI_OpeningFcn, как это:

handles = SamplingRate_Callback(handles.SamplingRate, eventdata, handles); 
+0

Hi nrz, спасибо за ваш ответ. Да, это сработает. Думаю, я не понимаю, почему, когда SamplingRate_Callback вызывается непосредственно с помощью его элемента GUI, вы можете просто сохранить постоянные значения дескриптора, используя guidata, но если вы вызовете одну и ту же функцию другим способом, guidata не будет работать. Имеет ли это смысл? Ты знаешь почему? – user1340654

0

В зависимости от того, что вы имеете в виду данные, вы можете использовать getappdata и setappdata для сохранения и загрузки данных в/из самого объекта (обычно я использую оси, на которые будут отображаться данные).

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