最近我一直在用Matlab GUI GUIDE做很多工作。
当我构建图形用户界面时,每次编写callback function时,我都必须在函数的末尾添加以下行:guidata(hObject, handles);例如:
function someFunction_Callback(hObject, eventdata, handles)
.... %implementation
........
guidata(hObject, handles); <------------现在我想知道为什么每次我有一个与GUI相关的函数时都要添加这一行。
幕后到底发生了什么?这个结构包含什么信息?
发布于 2012-11-24 20:07:04
使用guidata是在回调之间读取/存储用户数据的一种方式。我通常这样做
function reset_btn_tag_Callback(hObject, eventdata, handles)
data = get(handles.figure1, 'UserData');
data.state = -1; %change my data
% etc...
set(handles.figure1, 'UserData',data); %save it back before return除非您之前使用myData=guidata(object_handle)读取数据,否则没有必要使用guidata(object_handle,myData)
同样,guidata只是一个应用程序接口,您可以使用它将数据读/写回图形内部,以便在回调之间进行存储。如果您不在回调中修改自己的数据,则不需要使用它。我会把我所有的数据放在一个struct中,因为guidata只对一个变量有效。
因此,如果您不像示例中那样修改数据或句柄中的任何内容,那么就不需要使用它。
https://stackoverflow.com/questions/13540600
复制相似问题