【问题标题】:Matlab: getting GUI handle value from a callback function when calling by another functionMatlab:当另一个函数调用时从回调函数获取GUI句柄值
【发布时间】:2012-04-29 14:28:49
【问题描述】:

我是 MATLAB GUI 编程的新手,所以我的问题与此有关。

假设我使用 GUIDE 创建了一个 GUI。在创建函数中

MyGUI_OpeningFcn(hObject, eventdata, handles, varargin)

我调用另一个函数,

SamplingRate_Callback(handles.SamplingRate, eventdata, handles)

定义为

function SamplingRate_Callback(hObject, eventdata, handles)

SamplingRate_Callback 设置几个变量,

handles.a = 1;
handles.b = 2;
handles.c = 3;

handles 结构在 SamplingRate_Callback 函数中正确更新。我遇到的问题是,除非我将功能更改为

function handles = SamplingRate_Callback(hObject, eventdata, handles),

我无法将数据返回给调用函数MyGUI_OpeningFcn。我尝试过使用guidata(gcf, handles)guidata(hObject, handles),但都不起作用。

你能解释一下这个问题吗?

另外,我不确定何时使用 guidata(gcf, handles)guidata(hObject, handles)

感谢您的帮助!

【问题讨论】:

    标签: matlab matlab-guide


    【解决方案1】:

    根据数据的含义,您可以使用 getappdatasetappdata 将数据保存到对象本身或从对象本身加载数据(我通常使用数据将被绘制)。

    【讨论】:

      【解决方案2】:

      如何在MyGUI_OpeningFcn 函数中调用SamplingRate_Callback?在我看来,您还没有定义返回值,在本例中为 values

      修复将是这样的:

      function [handles] = SamplingRate_Callback(hObject, eventdata, handles)
      

      然后你会像这样从MyGUI_OpeningFcn 调用SamplingRate_Callback

      handles = SamplingRate_Callback(handles.SamplingRate, eventdata, handles);
      

      【讨论】:

      • 您好,nrz,感谢您的回答。是的,那会奏效。我想我不明白为什么当使用其 GUI 元素直接调用 SamplingRate_Callback 时,您可以简单地使用 guidata 保存持久句柄值,但是如果您以另一种方式调用相同的函数,则 guidata 不起作用。那有意义吗?你知道为什么吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-23
      相关资源
      最近更新 更多