首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >guidata(hObject,handles);为什么我们真的需要它?

guidata(hObject,handles);为什么我们真的需要它?
EN

Stack Overflow用户
提问于 2012-11-24 19:06:46
回答 1查看 7.1K关注 0票数 2

最近我一直在用Matlab GUI GUIDE做很多工作。

当我构建图形用户界面时,每次编写callback function时,我都必须在函数的末尾添加以下行:guidata(hObject, handles);例如:

代码语言:javascript
复制
function someFunction_Callback(hObject, eventdata, handles)
.... %implementation
........
guidata(hObject, handles);  <------------

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-24 20:07:04

使用guidata是在回调之间读取/存储用户数据的一种方式。我通常这样做

代码语言:javascript
复制
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只对一个变量有效。

因此,如果您不像示例中那样修改数据或句柄中的任何内容,那么就不需要使用它。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13540600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档