2

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

4

2 回答 2

3

ymihere提供的链接看起来很有帮助。此外,在这些链接中讨论的一些选项(嵌套函数和使用GUIDATA )在 SO:如何在 MATLAB 中的函数内创建 GUI?那里有几个例子说明代码在每种情况下的外观。

我个人偏爱使用嵌套函数,因为我觉得在大多数情况下它会创建更短、更简洁的代码。但是,如果您是新的 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 回调之间共享数据的好处是,它将您的代码与用户或其他应用程序可能执行的任何操作隔离开来。相反,使用全局变量可能相当危险。

于 2009-04-01T13:53:24.370 回答
2

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

打开表单 myfig 时传递 somevar:

h = myfig('UserData', somevar);

或以后:

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

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

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

查看链接文本链接文本

于 2009-04-01T12:28:29.800 回答