Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 主GUI与x27之间的关系;s和子GUI';s_Matlab_User Interface - Fatal编程技术网

Matlab 主GUI与x27之间的关系;s和子GUI';s

Matlab 主GUI与x27之间的关系;s和子GUI';s,matlab,user-interface,Matlab,User Interface,我有两个GUI,分别命名为masir和SetOut 放样GUI是masir的子GUI(按下masir上的按钮将打开放样) 要访问放样中的masir数据,我有以下两行代码: masirGUIhandle = masir; masirGUIdata = guidata(masirGUIhandle); 但是当我在SetOut中工作时,运行这两行将运行masir的opening函数(在opening函数中,我为变量设置了一些初始值,现在我不想要这些初始值,我需要更改变量的值),所以我不希望运

我有两个GUI,分别命名为masir和SetOut
放样GUI是masir的子GUI(按下masir上的按钮将打开放样) 要访问放样中的masir数据,我有以下两行代码:

masirGUIhandle = masir;  
masirGUIdata = guidata(masirGUIhandle);  
但是当我在SetOut中工作时,运行这两行将运行masir的opening函数(在opening函数中,我为变量设置了一些初始值,现在我不想要这些初始值,我需要更改变量的值),所以我不希望运行masir GUI的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是什么意思?

好吧,让我总结一下我是如何看待这个问题的

您想从
放样
读取数据而不创建它吗?这是不可能的,因为数据将在创建窗口时创建

一种很好的系统化方法是面向对象的(请参阅),您可以或多或少地从我的答案中复制一个示例(事件观察者示例)


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

  • 如果不想让窗口显示,可以使用
    set(guihandle,'Visible','off')将其设置为不可见。

  • 当窗口未关闭时,您可以使用
    getappdata(GUI句柄)

  • 如果您希望在窗口关闭后获得数据,则需要有一个将其存储在窗口外的函数


你能扩展这个例子吗?我的问题和这个问题完全一样:但是我需要更多的帮助,因为建议的答案不起作用