修改句柄结构

时间:2016-08-12 16:53:00

标签: matlab matlab-guide

我的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函数的工作空间中?

1 个答案:

答案 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)