您当前的位置:matlab资源网文章中心资料 → 文章内容

MATLAB 中GUI子程序的参数传递 - [MATLAB]

作者:Liuxqsmile  来源:转载http://liuxqsmile.blogbus.com/logs/17622732.html  发布时间:2008-4-10 9:06:28

     输入参数传递:
比如子GUI的名称为subGUI, 设想的参数输入输出为:[out1, out2] = subGUI(in1, in2)
subGUIm文件中(由GUIDE自动产生):
1.
第一行的形式为:function varargout = subGUI(varargin)
该行不用做任何修改;varargin varargout 分别是一个可变长度的cell数组(MATLAB帮助文件中有说明)。输入参数in1in2保存在varargin中,输出参数out1out2包含在varargout中;
2.
subGUIOpeningFcn中,读入参数,并用guidata保存,即:
        handles.in1 = varargin{1};
        handles.in2 = varargin{2};
        guidata(hObject, handles);

返回参数的设置:
1.
GUI子程序的OpeningFcn函数的结尾加上uiwait(handles.figure1); figure1subGUITag
2. subGUI
中控制程序结束(如"OK”和"Cancel"按钮)的callback末尾加上uiresume(handles.figure1),不要将delete命令放在这些callback中;
3.
在子GUIOutputFcn中设置要传递出去的参数,如 varargout{1} = handles.out1varargout{2} = handles.out2;末尾添加 delete(handles.figure1); 结束程序。

GUIOpenFcn中,如果不加uiwait程序会直接运行到下面,执行OutputFcn。也就是说程序一运行,返回值就确定了,再在其它部分对handles.output作更改也没有效果了。
加上uiwait后,只有执行了uiresume后,才会继续执行到OutputFcn,在此之前用户有充分的时间设置返回值。
通过以上设置以后,就可以通过    [out1, out2] = subGUI(in1, in2) 的形式调用该子程序。
在一个GUI中调用另一个GUI时,主GUI不需要特别的设置,同调用普通的函数一样。在打开子GUI界面的同时,主程序还可以响应其它的控件。不需要担心子GUI的返回值被传错了地方。
 
文章评论 (评论内容只代表网友观点,与本站立场无关!)

用户名: 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 0分

内 容:

         (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码

关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 -