最近我一直在使用 Matlab GUI GUIDE
。
当我构建 GUI 时,每次编写回调函数
时,我都必须在函数末尾添加以下行:guidata(hObject, handles);
例如:
function someFunction_Callback(hObject, eventdata, handles)
.... %implementation
........
guidata(hObject, handles); <------------
现在我想了解为什么每次有与 GUI 相关的函数时我都要添加这一行。
幕后到底发生了什么?这个结构体包含什么信息?
最佳答案
使用 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
仅适用于一个变量。
因此,如果您没有像示例中所示那样修改数据或句柄中的任何内容,则无需使用它。
关于matlab - guidata(hObject, 句柄);为什么我们真的需要它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13540600/