【问题标题】:How to pass variable to a function created through the guide如何将变量传递给通过指南创建的函数
【发布时间】:2011-10-25 15:52:08
【问题描述】:

我在 MATLAB GUIDE 中开发了一个 GUI。使外部函数或类中的数据可用于 GUIDE 创建的函数的最佳方法是什么?

【问题讨论】:

    标签: matlab matlab-guide


    【解决方案1】:

    ymihere 提供的链接看起来很有帮助。此外,在这些链接中讨论的一些选项(嵌套函数和使用 GUIDATA)在 SO 上的另一篇文章中得到了解决:How to create a GUI inside a function in MATLAB? 那里有几个示例说明代码在每种情况下的外观。

    我个人倾向于使用嵌套函数,因为我觉得在大多数情况下它可以创建更短、更简洁的代码。但是,如果您是新的 MATLAB 用户(可能需要一点时间来适应),共享应用程序数据的方法可能会更加困难。对您来说最简单的选择可能是在调用函数时设置“UserData”属性(如ymihere 所建议的那样)。如果您将 GUIDE GUI 保存到“myGUI.m”,那么您将调用:

    >> hGUI = myGUI('UserData','hello');
    

    其中 hGUI 是您的 GUI 对象的句柄。然后您可以获取“UserData”属性以查看它包含字符串“hello”:

    >> get(hGUI,'UserData')
    
    ans =
    
    hello
    

    除了“你好”,你可以放任何你想要的东西,比如数据结构。您应该能够从 GUIDE m 文件的回调中访问图形的“UserData”字段。您必须从传递给回调的 handles 参数中获取图形句柄。

    编辑:使用“UserData”属性或将数据附加到对象的其他一些方法的一个缺点是数据可能被意外(或有意)覆盖或以其他方式损坏由用户或其他应用程序。使用嵌套函数在 GUI 回调之间共享数据的好处是,它将您的代码与用户或其他应用程序可能执行的任何操作隔离开来。相反,使用global variables 可能相当危险。

    【讨论】:

      【解决方案2】:

      我不知道你到底想做什么,但你可能想使用该图的 UserData 属性:

      打开表单 myfig 时传递 somevar:

      h = myfig('UserData', somevar);
      

      或以后:

      h = myfig();
      [...]
      set(h, 'UserData', somevar);
      

      在图中,您可以通过以下方式访问该属性:

      function some_Callback(hObject, eventdata, handles)
          somevar = get(hObject, 'UserData');
      

      link textlink text

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-28
        相关资源
        最近更新 更多