将GUI变量加载到句柄中的问题
2次浏览(过去30天)
显示旧的注释
男人- - - - - -
这个快把我逼疯了。我想用许多按钮和文本窗口保存我的GUI的状态,这样当我加载保存的.mat文件后,值将放回句柄结构,GUI将看起来像我保存它时做的那样。我可以这样保存GUI状态向量:
状态。KMCsource = get(handles.KMCsource);
状态。sourceKmeansVRC = get(handles.sourceKmeansVRC);
状态。sourceFCM = get(handles.sourceFCM);
状态。FCMXBVRC = get(handles.FCMXBVRC);
状态。KMsourceclust = get(handles.KMsourceclust);
.
.
以此类推,我最终得到了一个名为“state”的结构变量,它包含了GUI中所有元素的完整处理数据。当我重新打开GUI并希望将所有这些数据传递到GUI句柄并让GUI反映上次保存时的状态配置时,问题就出现了。当我尝试:
集(handles.KMCSource state.KMCsource);
我得到“无效句柄对象”错误,因为在这一点上,GUI句柄只是浮点数,似乎不指向GUI元素。所以我的问题是这样的:一旦我保存了所有相关句柄数据在一个结构称为“状态”,我如何得到这些数据回到句柄,这样的GUI看起来它的方式,当我关闭它?
0评论
答案(2)
沃尔特·罗伯森
2012年3月7日
如果你在一个旧的图形已经消失的点上恢复(例如,重新启动程序后),那么你将不得不创建uicontrol和text对象对应于每个将被重新设置的控件;然后你可以设置()他们的状态。
您可能会遇到值得注意的问题,因为不是所有可以get()的属性都可以set()。
您还必须注意隐藏的属性,并且您必须注意,因为某些图形对象的某些字段将包含对您未显式创建的对象的图形对象引用(例如,axes对象上的标题)。
您将面临另一个会导致问题的问题:您将想要重新创建层次结构。当你是“生活”的层次结构是通过“父母”和“孩子”属性表示。您可以保存这些属性,但恢复它们将导致问题,因为它们是图形句柄,将引用旧的编号。
总而言之,您可能会发现saveas()图形并让MATLAB序列化例程处理所有细节要容易得多。