【问题标题】:MATLAB App Designer: Passing output from one button to anotherMATLAB App Designer:将输出从一个按钮传递到另一个按钮
【发布时间】:2018-01-08 18:03:42
【问题描述】:

我正在使用 App Designer 开发 MATLAB GUI,尽管我的问题可能与指南类似。 我想做的是将一个回调(按钮)的输出传递给另一个。原因是随着时间的推移变得高效;我希望用户能够先加载文件,然后选择要绘制的数据列。

我尝试过建立全局变量,但这似乎不起作用。

我的项目的目标是加载包含数十个“列”数据和数百个“行”测量值的 XML 文件(例如:温度和湿度随时间变化)。我的想法是用户将按下一个按钮来加载数据,然后选择要显示的所需列。

methods (Access = private)

    % Button pushed function: SelectNewFileButton
    function SelectNewFileButtonPushed(app, event)
        [filename, filepath] = uigetfile('..\*.*');
        app.FileNameEditField.Value=filename;
        app.FilePathEditField_2.Value=filepath;
    end

    % Button pushed function: LoadDataButton
    function LoadDataButtonPushed(app, event)
        % Loads XML data...
        global xHead;
        % EM_witsfun1 is a function which takes a file name & directory as an input, and returns the header and data
        [xHead, xData, toc1]=EM_witsfun1(app.FileNameEditField.Value,app.FilePathEditField_2.Value);
        app.DataLoadedinsEditField.Value=toc1; % Shows elapsed time after running the above function (just to make sure it works)
    end

    % Button pushed function: UpdateButton
    function UpdateButtonPushed(app, event)
        app.ChosenChannelNameEditField.Value=xHead{app.ChooseChannelNumberEditField.Value};
    end
end

错误是:

未定义的函数或变量xHead

也许在函数外部定义了一些东西,我可以在函数内更新(就像我对文本框所做的那样),但我不确定最优雅的方法是什么。

GUI显示图片:

【问题讨论】:

  • 我相信我解决了我的问题:我没有尝试建立新的全局变量,而是更新了现有 GUI 对象的元素。例如,通过将元胞数组的元素传递到列表框:app.ListBox1.Items={'newString1','newString2'};因此,ListBox 的新元素可以在整个应用程序中访问。我打算对数据做同样的事情,但我不确定如何在不显示表中的所有数据的情况下执行此操作(耗时)。

标签: matlab matlab-gui matlab-app-designer


【解决方案1】:

根据Mathworks,我使用公共属性解决了我的问题。

【讨论】:

  • 嗨!请接受此答案,表明问题已解决。更重要的是,虽然链接可能会回答问题,但最好在此处包含解决方案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
猜你喜欢
  • 2014-01-01
  • 1970-01-01
  • 2019-09-09
  • 2020-10-11
  • 2020-08-01
  • 1970-01-01
  • 2012-11-04
  • 1970-01-01
  • 2016-01-11
相关资源
最近更新 更多