2

最近我一直在使用Matlab GUI GUIDE.

当我构建一个 GUI 时,每次我写一个callback function,我必须在函数的末尾添加这一行:guidata(hObject, handles);例如:

function someFunction_Callback(hObject, eventdata, handles)
.... %implementation
........
guidata(hObject, handles);  <------------

现在我想了解为什么每次我有一个与 GUI 相关的函数时都要添加这一行。

幕后究竟发生了什么?这个结构包含什么信息?

4

1 回答 1

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它只适用于一个变量。

因此,如果您不修改数据或句柄中的任何内容,如示例中所示,则无需使用它。

于 2012-11-24T12:07:04.173 回答