现在我正在开发一个带弹出窗口的GUI,所以实际上它是一个包含多个GUI的工作包。
我已经仔细阅读了帮助文件(changme和toolpalette)中给出的示例,但是我没有动画方法来将数据从新文件转移回原来的数据。
这是我的问题。
我有两个GUI,A,Main和B,我用它来收集输入数据,我想将数据传回B.
我想在A中定义句柄的新子类。
比方说,
handles.newclass
如何定义其属性,例如'字符串'
在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。
答案 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
应该处于活动状态。修复它,其他一切看起来都很好(至少,你发布的小片段)。