Matlab:当另一个函数调用时,从回调函数获取GUI句柄值

Matlab:当另一个函数调用时,从回调函数获取GUI句柄值,matlab,matlab-guide,Matlab,Matlab Guide,我不熟悉MATLAB的GUI编程,所以我的问题与此相关 假设我使用GUIDE创建了一个GUI。在创建函数中 MyGUI_OpeningFcn(hObject, eventdata, handles, varargin) 我调用另一个函数 SamplingRate_Callback(handles.SamplingRate, eventdata, handles) 定义为 function SamplingRate_Callback(hObject, eventdata, handles)

我不熟悉MATLAB的GUI编程,所以我的问题与此相关

假设我使用GUIDE创建了一个GUI。在创建函数中

MyGUI_OpeningFcn(hObject, eventdata, handles, varargin)
我调用另一个函数

SamplingRate_Callback(handles.SamplingRate, eventdata, handles)
定义为

function SamplingRate_Callback(hObject, eventdata, handles)
SamplingRate_回调设置了几个变量

handles.a = 1;
handles.b = 2;
handles.c = 3;
处理
结构在
SamplingRate\u回调
函数中正确更新。我遇到的问题是,除非我将函数更改为

function handles = SamplingRate_Callback(hObject, eventdata, handles),
我无法将数据返回到调用函数MyGUI\u OpeningFcn
。我曾经尝试过使用
guidata(gcf,handles)
guidata(hObject,handles)
,但两者都不起作用

你能解释一下这个问题吗

另外,我不确定何时使用
guidata(gcf,handles)
vs.
guidata(hObject,handles)


谢谢你的帮助

如何在
MyGUI\u OpeningFcn
函数中调用
SamplingRate\u Callback
?在我看来,您似乎还没有定义返回值,在本例中,返回值将是
values

解决方案如下:

function [handles] = SamplingRate_Callback(hObject, eventdata, handles)
handles = SamplingRate_Callback(handles.SamplingRate, eventdata, handles);
然后您可以从
MyGUI\u OpeningFcn
调用
SamplingRate\u Callback
,如下所示:

function [handles] = SamplingRate_Callback(hObject, eventdata, handles)
handles = SamplingRate_Callback(handles.SamplingRate, eventdata, handles);

根据数据的含义,您可以使用getappdatasetappdata将数据保存到对象本身或从对象本身加载数据(我通常使用将绘制数据的轴)。

Hi nrz,感谢您的回答。是的,那会有用的。我想我不明白为什么当使用其GUI元素直接调用SamplingRate_回调时,您可以简单地使用GUI数据保存持久句柄值,但是如果您以另一种方式调用同一函数,GUI数据就不起作用了。这有意义吗?你知道为什么吗?