当前位置:文档之家› Matlab多窗口传值问题(GUI)

Matlab多窗口传值问题(GUI)

Matlab多窗口传值问题(GUI)
Matlab多窗口传值问题(GUI)

Matlab多窗口传值问题(GUI)

(上传者说明:此文是转载的)

2009-02-05 13:16

%by dynamic

%

%For more information,see also

%

%https://www.doczj.com/doc/2a18294556.html,——中国最大的数学工具软件联盟论坛

%

%https://www.doczj.com/doc/2a18294556.html,——专业、优秀和权威的MATLAB技术交流平台

%

%Email:matlabsky@https://www.doczj.com/doc/2a18294556.html,

1.直接传递

当要在一个matlab中的.m文件打开一个新窗口时候,可以直接传递例如有两个窗口 A.fig/A.m 和 B.fig/B.m

在 A.m中

B(var1) ; 即可传入参数

那么在B中这样获取即可:

if length(varargin)==1

some_var= varargin{1};

end

2.通过output属性传回

在A.m中

some_var=B(var1);

也就是 B还需要返回值。

那么在B中就需要设置handles的output值了

function varargout = B_OutputFcn(hObject, eventdata, handles) varargout{1} = some_var_in_figure_B;

3. 几个重要的函数

1.getappdata(h,'Name'); 获取窗口句柄为h中的'Name'变量

2.setappdata(h,'Name',value);设置窗口句柄为h中的'Name'变量为Value

3.isappdata(h,'Name'); 判断h句柄下面有无‘Name’的变量

4.rmappdata(h,'Name');删除h句柄下面‘Name’的变量

5.guidata(h); 获取窗口句柄为h的 handles结构

6.guidata(h,handles); 设置窗口句柄为h的handles结构为handles

7.guihandles(h) 生成handles结构

说明:

关于appdata的几个函数是最基本的,每个figure都可以有几个很多appdata,setappdata(0,'Name',value) 当设置句柄为0时,表示整个Matlab 共享的数据域,任何figure都可以访问。这也可以成为数据传递的另一种方式。

handles是我们在GUI的m文件经常看到的东西,为什么会有guidata呢?那是因为一个figure对象下面可能有很多其他的对象,例如 edit axes slider 等等,为了将这些东西组织起来供用户方便的访问,matlab特地的添加了这个数据结构,它包括改figure所有的控件。你可以直接访问

使用 guihandles(h) 可以生成 hanles结构,它包含 h 中的所有控件,其中h 可以从fig文件load进来。

guidata(h) 返回 matlab默认给这个 figure生成的 handles结构。

guidata(h,handles) 是修改 h (如果是一个figure) 或者 h 的父figure 的handles值。

它会不停的向上查找 h的parent ,直到为figure,然后便修改其handles值。

4.句柄概念

个人认为,句柄就是相当于指针的意思,在Matlab中,每一个GUI对象都有一个handle,他们都是一些小数或者整数,Matlab能够保证这些数字不重复,因此通过这个句柄就可以访问或者修改你的对象。

通过传递句柄的方式可以修改传递的值的内容,而传递变量就做不到,这点和C语言的指针类似。

相关主题
文本预览
相关文档 最新文档