我有两个GUIs名称:d masir和SetOut
SetOut GUI是用于masir的子GUI (按下masir上的一个按钮将打开SetOut)来访问SetOut中的masir数据,我有以下2行代码:
masirGUIhandle = masir;
masirGUIdata = guidata(masirGUIhandle); 但是在SetOut中运行这两行代码将运行masir的打开函数(在打开函数中,我为变量设置了一些初始值,现在我不需要这些初始值,我需要为变量修改值),所以我不希望运行masir的OpeningFcn,我只需要访问SetOut中的masir数据,我能做些什么来解决这个问题?
有人能帮我解决这个问题并解释更多吗?
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是什么意思?
发布于 2012-04-10 12:11:02
让我总结一下我是如何看待问题的。
您想在不创建数据的情况下从SetOut读取数据吗?这是不可能的,因为数据将在创建窗口时创建。
一个好的、系统的方法是面向对象的(参见模型-视图控制器模式),您可以或多或少地从我的答案这里 (例如事件观察者)中复制一个示例。
但是如果你想坚持你的代码,我也有一些想法:
set(theGUIhandle,'Visible','off')将其设置为不可见getappdata(theGUIhandle)获取数据https://stackoverflow.com/questions/10058163
复制相似问题