- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Matlab GUI 程序编制技巧
Matlab GUI 程序编制技巧
确定界面启动的初始态
编制界面最好的方法是在GUIDE里绘制,完成后存盘会自动生成“文件名.fig”和“文件名.m”文件,前者存储了界面的各项参数,如大小、菜单、控件等;后者是一个自动生成的调用参数的脚本文件,在界面中的每一个控件和菜单都有相应的回调函数,所需要的运行程序都填写在这些回调函数中。
一般每一个界面的启动状态在GUIDE里绘制完成,它们的参数存储在“文件名.fig”文件中。但有时需要在启动时运行某些程序,如在截面上显示一幅图像,并进行某些处理等,这些代码就要写在“文件名_OpeningFcn (hObject, eventdata, handles, varargin)”函数中。
从界面读取数据
从界面的控件中读取数据的基本格式为:
get(findobj(gcf,Tag,控件名),属性);
其中的findobj函数用于寻找特定的控件,该控件的“Tag”属性为后面的字符串。
对控件的属性进行设置的基本格式为:
set(findobj(gcf,Tag,控件名),属性,属性值);
当要对界面本身的属性进行操作时,用
get(gcf,属性);
和
set(gcf,属性,属性值);
比如要把一个变量a存入界面的UserData中,用
set(gcf,UserData,a);
不同界面间变量空间的切换和数据的传递
有时一个程序不止一个界面,而且要在几个界面间切换,但它们的变量在不同的空间中,不能通用,因为每当调用一个界面函数,都会进入一个新的变量空间。解决的办法是利用界面和控件的’UserData’属性在界面的转换过程中传递界面的句柄和变量。
如一个主界面imagmatching2调用参数设置界面paracall2,为了在调用完之后,程序可以返回主界面(连同新的变量),必须将主界面的句柄作为参数传递给设置界面函数。如主界面中负责调用的控件为“pushbutton12”按钮(在该控件的属性Tag中可以看到),则在它的回调函数中要有如下代码:
function pushbutton12_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton12 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
handle1=gcf;
paracall2(handle1);
代码的前几行注释是系统自动加的。后面的两行表示取当前界面的句柄并作为参数来调用参数设置界面。
在参数设置界面的文件paracall2.m中,在它的“paracall2_OpeningFcn(hObject, eventdata, handles, varargin)”回调函数中加上以下两行:
handle1=varargin{1};
set(gcf,UserData,handle1);
这样就把前一个界面(imagmatching2)的句柄传递到了该界面的变量空间中,并存储到该界面的’UserData’中。
要从当前界面(paracall2)返回前一界面并带回已设定好的参数变量,也用类似的办法。如负责返回的控件为“pushbutton3”按钮,则在它的回调函数中要加入:
function pushbutton3_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
evaluate;
handle1=get(gcf,UserData);
set(handle1,UserData,matper);
close;
第一行“evaluate;”为设置参数的过程。后面两行是将参数变量传递回前一个界面的变量空间中,其中的“matper”为存储所有要传递的变量的元胞数组,它被置于前一界面的’UserData’中。最后一行表示关闭该界面。
因此,在不同界面(也就是不同函数,拥有不同的变量空间)中传递信息的主要方法是利用图像和控件的’UserData’属性,它可以存储任何形式的变量。一个界面调用另一个界面后返回,基本方法是:
将前一界面的句柄保存在后一界面的’Use
您可能关注的文档
- LMS VL介绍及其在汽车行业应用.doc
- LLDPE土工膜安装施工作业指导书.doc
- LMS和RLS算法应用及仿真分析.doc
- LoadPass装载仪系统.doc
- LOD技术在实时渲染系统的应用.doc
- London as a financial centre 作为金融中心的伦敦.doc
- lotus 编程学习笔记.doc
- Lotus Notes程序安装配置及奥西工程机手册.doc
- Low Back Pain – What it is, how to - University of Maryland School of .ppt
- Low QI Coal Tar Pitch as Impregnating Pitch低喹啉不溶物浸渍沥青.ppt
文档评论(0)