在Matlab中由gui外部的对象触发的回调函数中访问gui句柄

时间:2014-12-19 02:23:34

标签: matlab events user-interface matlab-guide handles

我在Matlab中构建了这个GUI来与数据交互。我创建了一个数据环境对象,以促进与数据的交互。此对象触发事件,我希望GUI监听其中一些事件。因此,正如您在下面的代码中看到的,我使用指令addlistener将事件链接到本地​​函数。问题是这个本地函数无法访问GUI句柄,你有没有想过如何解决这个问题?感谢

function varargout = myGUI(varargin)
...
end

function varargout = myGUI_OutputFcn(hObject, eventdata, handles) 
    varargout{1} = handles.output;
    dataEnv = getappdata(hObject.Parent, 'ratData');
    addlistener(dataEnv,'TrialChanged',@respond_TrialChanged);
end

function respond_TrialChanged(dataEnv, eventData)
    do_something(handles) % I want to access the GUI handles here
end

function do_something(handles)
    ...
end

1 个答案:

答案 0 :(得分:1)

您可以使用anonymus函数作为回调来提供句柄。例如:

function varargout = myGUI_OutputFcn(hObject, eventdata, handles) 
    varargout{1} = handles.output;
    dataEnv = getappdata(hObject.Parent, 'ratData');
    addlistener(dataEnv,'TrialChanged',@(e,d) respond_TrialChanged(e,d,handles.output));
end

function respond_TrialChanged(dataEnv, eventData, handles) 
    do_something(handles) % I want to access the GUI handles here
end

匿名函数的tird参数是句柄或句柄,或者是你想在myGUI_OutputFcn范围内传递给respond_TrialChanged的任何内容。

希望这有帮助。