我有一个用MATLAB创建的GUI指南。我正在尝试从GUI返回值。以下是代码的相关部分(完整的代码可以在here中找到):
function varargout = test(varargin)
% --- Outputs from this function are returned to the command line.
function varargout = test_OutputFcn(hObject, eventdata, handles)
% Get default command line output from handles structure
varargout{1} = handles.output;
varargout{2} = handles.test;
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
handles.test = 'ok';
% Update handles structure
guidata(hObject, handles);一旦我执行GUI,我就会收到这个错误消息:

我在MATLAB新闻组上发现了一个similar问题,但我没有找到解决方案(我按照建议阅读了所有的guidata文档)。
我的问题是,我在一个向导的函数中的"handles“结构中记录了一个信息,而无法在另一个函数中检索该信息。
我使用tried来取消注释test_OpeningFcn函数中的UIWAIT调用,试图等待用户关闭窗口。
% --- Executes just before test is made visible.
function test_OpeningFcn(hObject, eventdata, handles, varargin)
% Choose default command line output for test
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes test wait for user response (see UIRESUME)
uiwait(handles.figure1);在我点击按钮后,然后尝试获取句柄变量。但它也不起作用,fails也出现了类似的错误消息。
任何帮助都将受到欢迎。感谢您的关注。
发布于 2012-08-08 06:52:43
问题是,当您将GUI调用为:
>> [a,b] = test()此调用立即返回,因此在output函数中,您尝试访问尚不存在的handles.test,从而导致错误。
Doug Hull的screencast展示了如何从图形用户界面返回值。下面是要从该页面复制的更改列表:
%%% OpenignFCN
uncomment uiwait
%%%OutputFCN
varargout{1} = handles.output;
% The figure can be deleted now
delete(handles.figure1);
%%%CloseReqFCN
if isequal(get(hObject, 'waitstatus'), 'waiting')
% The GUI is still in UIWAIT, us UIRESUME
uiresume(hObject);
else
% The GUI is no longer waiting, just close it
delete(hObject);
end发布于 2012-08-08 05:14:40
在初始化代码中,您必须声明该字段。
handles.test = [];所以你可以稍后调用它。
发布于 2014-09-18 13:20:50
您需要添加
handles = guidata(gcf); 更新不同函数中的句柄。希望我是对的。
https://stackoverflow.com/questions/11851476
复制相似问题