GUI数据传递(需要一定matlab基础)
主要分两类:GUI内部数据传递及GUI之间的传递,用appdata都可以实现,用法稍有不同。
内部:
① 在定义数据的Callback函数结尾,setappdata,句柄为figure的tag,句
柄格式为handles.tag。
格式为:set(handles.tag,'Name',Value(或者就是变量名));
② 在使用数据的Callback函数开头,进行数据承接,getappdata,格式类似:
格式为:Nargs = get(handles.tag,'Name’);
外部:
① 在定义数据的figure函数的Openning函数体中,setappdata,句柄为‘0’,
即屏幕的句柄
格式为:set(0,'Name',Value(或者就是变量名));
② 在使用数据的figure函数的Callback函数开头,getappdata,句柄为‘0’。
格式为:Nargs = get(0,'Name’);
之所以不在Openning函数中进行承接,是因为如果现在Openning中承接,Callback函数要用还得进行内部appdata传递,不能直接用。直接在Callback承接能简便些,但是缺少条理性
几个要点: ① set(0,‘Name’,Value),其实质就是将变量存进屏幕的结构体中,级别高,因此效果相当于全局变量。但是当从一个GUI中调用这些数据时,必须确保所用数据已经调进系统内存,也就是说,存在这样一种情况:当我们在系统重启后,马上开始运行一个GUI,这个GUI可能会出现数据不足的状况,就是因为其所调用的那些屏幕级的appdata没有被调进内存,它们在系统启动后还没被运行过。怎么办呢?只能再增加几行程序特地把它们加进内存,在
调用语句getappdata前,按如下语句将所需要的figure开启然后关闭:
格式为:h=tag_of_figure;close(h);
开启又关闭,看似没有用,但是经过一次启动,各个figure里面的setappdata都能得到运行,把数据写到屏幕级内存中,作用非小。 ② 这种开启又关闭的方法对于父子调用关系的GUI没有实际的用处,主要是针对地位平等,数据共享的调用关系
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- esig.cn 版权所有 湘ICP备2023023988号-3
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务