我在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
答案 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
的任何内容。
希望这有帮助。