最近我和Matlab GUI GUIDE
一起工作了很多。
当我构建GUI时,每次写callback function
时,我都必须在函数末尾添加这一行:guidata(hObject, handles);
例如:
function someFunction_Callback(hObject, eventdata, handles)
.... %implementation
........
guidata(hObject, handles); <------------
现在我想了解为什么每次我有一个与GUI相关的功能时我都会添加这一行。
幕后真的发生了什么?这个结构包含哪些信息?
答案 0 :(得分:4)
使用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
只是一个API,您可以使用它来读取/写入数据回到数字内部,以便在回调之间存储。如果您不在回调中修改自己的数据,则无需使用它。我将所有数据都放在struct
因为guidata
仅用于一个变量。
因此,如果您未在示例中显示数据或句柄中的任何内容,则无需使用它。