【问题标题】:MATLAB GUI "forgets" objects after modifying handles structureMATLAB GUI 在修改句柄结构后“忘记”对象
【发布时间】:2016-08-13 00:54:13
【问题描述】:

我的 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 已经“忘记”或破坏了 handles.sys 对象。

为什么会发生这种情况,正确的方法是什么?我是否需要使用构造函数重建整个 sys 对象然后调用handles.sys = newsys?是否因为 sys 对象仅存在于临时 openfile_Callback 函数的工作区中?

【问题讨论】:

    标签: matlab matlab-guide


    【解决方案1】:

    当您更新struct(例如handles)时,这些更改是针对本地副本的,因此其他函数看不到。您需要将handles 存储回图中的guidata 以使更改保持不变。 guidata 的第一个输入应该是图形的句柄(我以 handles.fig 为例)。完成此操作后,更新后的 handles 结构将自动在您的 GUI 中传递。

    handles.sys = sys;
    
    % "Save" the updated handles struct in the figure
    guidata(handles.fig, handles)
    

    【讨论】:

    • 我不得不使用guidata(handles.figure1, handles);,因为这是 matlab 默认创建的。
    • @toshiomagic 对。正如我所说,我只是以handles.fig 为例。每个人都会有所不同。
    猜你喜欢
    • 2013-11-16
    • 1970-01-01
    • 2012-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-19
    相关资源
    最近更新 更多