声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1870|回复: 6

[GUI界面] GUIDE制作的界面之间的参数传递

[复制链接]
发表于 2010-8-24 11:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
     我用guide做了两个界面,分别称为A和B,A是主界面,在A上点击一个菜单上,跳出B界面。这一步我用的是run+B界面的M文件名实现的
现在在A界面中,导入一个MAT文件,进行一些计算,得到一些结果,这些结果保存在handles结构体中,比如,角度就保存在handles.angles结构体中,在A界面的各控件中用handles结构体来传递角度这个参数是没有问题的
     现在我要把  角度 这个参数传到B界面中,    我曾试过在B界面中运行下面的语句:
    GUIhandle=A;%A 是A界面的m文件名
    Ahandles=guidata(GUIhandle);

我查看了下 Ahandles里面的一些东西,全是A界面上控件的句柄 ,没有用户后在添加到handles结构体中的那部分,如果我要把  角度 这个参数传到B界面中,要怎么办啊?        
回复
分享到:

使用道具 举报

 楼主| 发表于 2010-8-24 16:43 | 显示全部楼层
本帖最后由 cc2005726 于 2010-8-24 16:46 编辑

我调了下,发现GUIhandle=A;这一句实际上是又生成了一个A界面,所以 Ahandles里面的全是A界面上控件的句柄 ,当然没有用户添加到handles结构体中的那部分。
但是在matlab自动生成的A.m文件一开始就有一段说明:
H =A returns the handle to a new CALED11ZHSH or the handle to
%      the existing singleton*.
也就是说在A界面已经存在的情况下,这一句是不应该重新生成A界面的,而是应该返回已经存在的A界面的句柄。我自己为了印证这句话,写了个小程序,附在后面了,证明是正确的。
我的程序里为什么会又生成一个A界面呢?

那么要如何传递已经存在的A界面中的数据到B界面中呢? quan.fig (1.93 KB, 下载次数: 0) daniel.fig (2.05 KB, 下载次数: 0)
daniel.m (3.37 KB, 下载次数: 0)
quan.m (3.34 KB, 下载次数: 0)
发表于 2010-8-24 20:44 | 显示全部楼层
问一下,你附近给的文件不就可以实现吗?那好像是matlab—help中的例子,
发表于 2010-8-24 20:52 | 显示全部楼层
首先你可以用figure的属性userdata,比如:在A窗口代码中,
set(figA,'userdata',handles.angles);%figA是界面A的Tag属性值;
然后在B窗口代码中,
handles.angles=get(figA,'userdata')%这样应该可以吧!
或者也可以用setappdata/getappdata
在A窗口代码中,setappdata(0,'name',handles.angles)%0表示屏幕,name随便取,
在B窗口代码中,value=getappdata(0,'name')%具体的你再查一下help-->setappdata,getappdata
 楼主| 发表于 2010-8-25 10:18 | 显示全部楼层
回复 zhouyang664 的帖子
这几种 方式我都试过的,在你的这一句中
handles.angles=get(figA,'userdata')%
意味着要知道figA的句柄,而figA句柄的得到是由下面这一句
GUIhandle=A;%A 是A界面的m文件名
问题就出在这一句中,在我的附件里,这一句运行后,如果当前没有A界面的存在,则产生一个A界面,若当前有A界面的存在,则返回已存在的A界面的句柄
本来应该是这样子的,但在我实际的程序里,运行这一句话,不管A界面是否已存在,都会重新再生成一个A界面,返回这个新产生A界面的句柄,我不知道这是怎么一回事?我要的是返回已存在的A界面的句柄 啊


   
发表于 2010-8-25 10:43 | 显示全部楼层
回复 cc2005726 的帖子


    figA是界面A的Tag属性值;在设置界面的时候就存在了啊!
 楼主| 发表于 2010-8-25 15:50 | 显示全部楼层
回复 zhouyang664 的帖子
呵呵,此处的figA指的是A的句柄,不是指tag属性值(若是tag属性的话,我的程序在这一句会报错的),这个我已经确认过了


   
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-18 12:48 , Processed in 0.065973 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表