matlab - guidata(hObject, 句柄);为什么我们真的需要它?

标签 matlab matlab-guide

最近我一直在使用 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/

相关文章:

matlab - 有没有办法在不影响 uistack 顺序的情况下更改 matlab 中的当前轴对象?

MATLAB:保存文件时显示进度条?

matlab - 保存具有不同背景颜色的 MATLAB 图

Matlab:条形图中缺少标签

matlab - 在 matlab 中呈现随机游走者的运动

matlab - 如何将函数传递给使用 MATLAB 指南创建的按钮组中的单选按钮?

Matlab 使用 GUI 按钮调用 'Import Data'

class - 我是否必须将 get/set 方法放在 matlab 的类定义中?

matlab - 如何在 Matlab 中存储此结构(整数列表列表)?

arrays - 计算数组中元素的最快方法是什么?