2012-04-18 152 views
3

我是MATLAB的GUI编程新手,所以我的问题与此有关。Matlab:通过另一个函数调用时从回调函数获取GUI句柄值

假设我使用GUIDE创建GUI。在创建功能

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 ST在SamplingRate_Callback函数中正确更新结构。我遇到的问题是,除非我改变功能

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

我不能将数据返回给调用函数,MyGUI_OpeningFcn。我曾尝试使用guidata(gcf, handles)guidata(hObject, handles),但都无效。

您能否解释一下这个问题?

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

感谢您的帮助!

回答

0

如何在MyGUI_OpeningFcn函数中调用SamplingRate_Callback?在我看来,你还没有定义返回值,在这种情况下这将是values

的解决将是这样的:

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

然后你会从MyGUI_OpeningFcn这样叫SamplingRate_Callback

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

嗨nrz,谢谢你的回答。是的,那会起作用。我想我不明白为什么当通过使用它的GUI元素直接调用SamplingRate_Callback时,可以使用guidata简单地保存持久句柄值,但是如果以另一种方式调用相同的函数,guidata不起作用。那有意义吗?你知道为什么吗? – user1340654 2012-04-19 05:44:04

0

根据你所说的数据是说,你可以使用getappdatasetappdata保存和加载数据到/从对象本身(我通常使用数据将被绘制在轴上)。