GUI,Matlab中的数据共享

时间:2011-07-25 13:38:02

标签: user-interface matlab

现在我正在开发一个带弹出窗口的GUI,所以实际上它是一个包含多个GUI的工作包。

我已经仔细阅读了帮助文件(changme和toolpalette)中给出的示例,但是我没有动画方法来将数据从新文件转移回原来的数据。

这是我的问题。

我有两个GUI,A,Main和B,我用它来收集输入数据,我想将数据传回B.

问题1:

我想在A中定义句柄的新子类。 比方说, handles.newclass 如何定义其属性,例如'字符串'

问题2:

在A中,按钮具有回调

B('A', handles.A);

所以我们激活B.fig。

在B完成工作后, 它在B(!)

中收集了以下数据(字符串和双精度数)
title_1 itle_2 ... title_n

num_1 num_2 ... num_n

我想将数据传回A。

按照说明,我写了下面的代码。

    mainHandles = guidata(A);
title = mainHandles.title_1;
set(title,'String',title_1);

然而,当我回到A时,A中的句柄根本没有改变。

请帮帮我。

谢谢!

=============更新=====

我找到的解决方案是添加额外的变量(比如handle.GUIdata)来处理一个GUI的结构,每当需要数据时,只需从相应的GUI中读取它们。 它对我很有用,因为我有一个主控制面板和几个子GUI。

3 个答案:

答案 0 :(得分:0)

对此问题进行了简短的讨论here

答案 1 :(得分:0)

我有类似的问题,我希望外部批处理脚本实际控制我的GUI应用程序,但没有理由两个GUI不能做同样的事情。

我创建了一个Singleton对象,当GUI应用程序启动时,它获取对Singleton控制器的引用,并将相应的gui句柄设置到对象中供以后使用。一旦Singleton具有句柄,它就可以使用set和get函数向任何具有句柄的gui控件提供或交换数据。系统中的任何函数/回调都可以获得单例的句柄,然后调用Singleton上的例程,这些例程将允许交换数据甚至控制操作。例如,您的GUI A可以向控制器询问GUI B的字段X中的值,或者甚至可以根据需要直接修改该值。它非常灵活。

在您的情况下,如果GUI A或B消失,请务必使任何句柄无效,并在获取或修改任何值之前测试该gui组件是否实际存在。 Singleton对象甚至可以在你的应用程序的多次调用中存活,只要Matlab本身保持运行,所以如果你不想要陈旧的信息,请务必在退出时清理。

http://www.mathworks.com/matlabcentral/fileexchange/24911-design-pattern-singleton-creational

答案 2 :(得分:0)

关于问题2,看起来您忘记在设置标题时首先指定图A应该处于活动状态。修复它,其他一切看起来都很好(至少,你发布的小片段)。