我的gui工具栏中有一个加载按钮。当我单击它时,它允许我从对话框中选择一个文件。我打开一个.mat文件,其中有一个名为sys
的对象。
一旦我选择了文件,回调就应该运行以下代码:
handles.sys = sys;
%% A bunch of other stuff to populate values from sys into the gui text fields %%
对于此回调中的其余代码,我可以调用handles.sys并查看一切都在那里。但是,当我退出此函数时,handles.sys不再等于sys。似乎gui已经“忘记”或破坏了handle.sys对象。
为什么会发生这种情况,以及正确的方法是什么?我是否需要使用构造函数重构整个sys对象,然后调用handles.sys = newsys
?是否发生这种情况是因为sys对象只存在于临时openfile_Callback
函数的工作空间中?
答案 0 :(得分:3)
更新struct
(例如handles
)时,这些更改将发送到本地副本,因此其他功能无法看到。您需要将handles
存储回图中的guidata
,以便更改保持不变。 guidata
的第一个输入应该是图的句柄(我使用handles.fig
作为示例)。执行此操作后,更新的handles
结构将自动在GUI周围传递。
handles.sys = sys;
% "Save" the updated handles struct in the figure
guidata(handles.fig, handles)