matlab - 主 GUI 和子 GUI 之间的关系

标签 matlab user-interface

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

masirGUIhandle = masir;  
masirGUIdata = guidata(masirGUIhandle);  

但是运行这两行将运行 masir 的打开函数,因为我在 SetOut 中工作(在打开函数中,我已经为变量设置了一些初始值,现在我不需要这些初始值,我需要更改我的值变量)所以我不想运行 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 是什么意思?

最佳答案

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

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

一个好的、系统的方法是面向对象(参见 Model-View Controller Pattern )您可以或多或少地从我的答案 here 中复制一个示例。 (事件-观察者示例)


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

  • 如果您不希望窗口显示,可以使用 set(theGUIhandle,'Visible','off') 将其设置为不可见

  • 当窗口未关闭时,您可以使用getappdata(theGUIhandle)获取数据

  • 如果您想要在窗口关闭后获取数据,您需要有一个函数将其存储在窗口之外。

关于matlab - 主 GUI 和子 GUI 之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10058163/

相关文章:

适用于 Windows/Gnome 的 Python GUI 库

java - 微调器,添加向上/向下箭头按钮监听器

matlab - 如何检测单元格数组中的空单元格?

python - 在给定一些约束的情况下,对等腰三角形的两个剩余顶点进行采样

matlab - 如何使用 Matlab 提高 PSD 的分辨率

r - 如何让RStudio使用R语言设置?

java - 在 Java 中的 JButton 中有 JCheckBox 可以吗?

客户端数据结构的 JavaScript 加密(或混淆)

matlab - 填充曲线下的边界区域

user-interface - 如何加速matlab 'print'函数