首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >主GUI与子GUI的关系

主GUI与子GUI的关系
EN

Stack Overflow用户
提问于 2012-04-07 20:37:46
回答 1查看 1.4K关注 0票数 2

我有两个GUIs名称:d masir和SetOut

SetOut GUI是用于masir的子GUI (按下masir上的一个按钮将打开SetOut)来访问SetOut中的masir数据,我有以下2行代码:

代码语言:javascript
复制
masirGUIhandle = masir;  
masirGUIdata = guidata(masirGUIhandle);  

但是在SetOut中运行这两行代码将运行masir的打开函数(在打开函数中,我为变量设置了一些初始值,现在我不需要这些初始值,我需要为变量修改值),所以我不希望运行masir的OpeningFcn,我只需要访问SetOut中的masir数据,我能做些什么来解决这个问题?

有人能帮我解决这个问题并解释更多吗?

代码语言:javascript
复制
I use this easy way for data sharing between GUIs
%In the end of OpeningFcn of Main GUI
setappdata(0,'HandleMainGUI',hObject);
%When you want to edit shared data you must get the handle
HandleMainGUI=getappdata(0,'HandleMainGUI');
%write a local variable called MyData to SharedData, any type of data
setappdata(HandleMainGUI,'SharedData',MyData); 
%get SharedData and save it to a local variable called SomeDataShared
SomeDataShared=getappdata(HandleMainGUI,'SharedData'); 
Don't forget to clean up the data shared in the CloseReqFcn of you main GUI
HandleMainGUI=getappdata(0,'HandleMainGUI');
rmappdata(HandleMainGUI,'MySharedData') %do rmappdata for all data shared 
Remember that your GUIs might try to getappdata that doesn't exist, you should    first     test if it does exist
if (isappdata(0,'HandleMainGUI') & isappdata(HandleMainGUI,'MySharedData'))
%get, set or rm appdata
else
%do something else, maybe loading default values into those variables
end  

更详细地告诉我,哪一行代码应该用MainGUI编写,哪一行应该用SubGUI编写?

告诉我CloseReqFcn是什么意思?

EN

回答 1

Stack Overflow用户

发布于 2012-04-10 12:11:02

让我总结一下我是如何看待问题的。

您想在不创建数据的情况下从SetOut读取数据吗?这是不可能的,因为数据将在创建窗口时创建。

一个好的、系统的方法是面向对象的(参见模型-视图控制器模式),您可以或多或少地从我的答案这里 (例如事件观察者)中复制一个示例。

但是如果你想坚持你的代码,我也有一些想法:

  • 如果不希望窗口显示,可以使用set(theGUIhandle,'Visible','off')将其设置为不可见
  • 当窗口未关闭时,可以使用getappdata(theGUIhandle)获取数据
  • 如果希望在关闭窗口后获得数据,则需要有一个将其存储在窗口外的函数。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10058163

复制
相关文章

相似问题

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