




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二讲MATLAB图形用户界面设计设计原那么和一般步骤图形用户界面设计工具介绍用户控件的制作用户菜单的制作回调函数M函数文件实现图形用户界面实验一:计算器程序§2.1设计原那么和一般步骤1) 分析界面所要实现的主要功能,明确设计任务。2) 绘界面草图,注意从使用者的角度来考虑界面布局。3) 利用GUI设计工具制作静态界面。4) 编写动态功能程序。注意:1) 先完成大致界面布局,再编写功能程序。2) 界面风格要一致,且符合使用习惯。例如,一般习惯图形区在上面或左面,控制区在下面或右面等等。3/21/20243例如,以本次试验的内容“计算器”为例。1) 功能分析:完成数字的四那么运算,以及一局部常用的科学计算:sin,cos,log等等。2) 界面草图:可以有多种风格的界面。给出几种设计草图。 草图一 草图二 草图三3) 利用GUI设计工具实现草图的布局,caculator.fig。4) 编写相应的程序完成计算器的各项功能,caculator.m。3/21/20244§2.2图形用户界面设计工具介绍 MATLAB6.5版本的GUI设计工具较前面的版本有很大的改善,设计界面变化很大。 翻开GUI设计工作台的命令: guide %翻开设计工作台启动界面 guidefile %在工作台中翻开文件名为file的用户界面 菜单项[File:New->GUI] %翻开设计工作台启动界面 注意:guide命令中文件名不区分大小写。 翻开的GUI启动界面提供新建界面(CreateNewGUI)或翻开已有界面文件(OpenExistingGUI)的属性页。新建界面可以选择空白界面、包含有控件的模板界面、包含有轴对象和菜单的模板界面、标准询问窗口等选项。 选择任意一项都会翻开GUI设计工作台,对界面静态组成局部进行的具体的修改都在工作台实现。3/21/20245GUI设计工具的启动界面新建界面的选项预览窗口是否在新建时保存文件最近打开的界面文件的列表打开文件浏览器3/21/20246GUI设计工作台设计工作区主要由4个功能区,六个实用工具组成控件选择区菜单条工具条对齐工具文件编辑菜单编辑对象属性对象列表运行界面工作区缩放句柄3/21/20247对象选择按钮,用来选取工作区上分布的控件。单功能按键,按下操作代表一定的功能实现。双位按键,代表“开”“关”两种状态。互斥选择按钮,多个选项互斥选择时使用。互容选择按钮,同时选中多个选项时使用。编辑文本框,可以自由输入字符,编辑字符串静态文本框,用于显示注释说明用文字,不可编辑。滑动块,利用游标滑动,可以获取不同的值。控件区域框,用于对控件区域进行标识。列表框,提供多个可供选择的选项,可以互容选择。弹出框,带有多个选项,只能选择其中一项。轴对象,用来显示图形。 用户控件列表:3/21/20248 以“计算器”界面草图一为例。
1.初步布局,根据草图将控件选择区的相应控件拖拉到设计工作区的相应位置。3/21/202492.修改控件属性 每一个控件都不可能是完全符合界面设计要求的,需要对其属性进行设置,以获得所需的界面显示效果。可以通过双击该控件,或利用GUI设计工具的下拉菜单[View:PropertyInspector]翻开控件属性对话框。属性对话框具有良好的交互界面,以列表的形式给出该控件的每一项属性。例如右图是“+”按钮的属性列表。3/21/202410下面对各控件的主要属性进行一下说明。1) 双击设计工作区的空白局部,翻开整个图形窗的属性框。 MunuBar:none %图形窗是否使用标准菜单 Name:caculator %图形窗名称 Resize:off %图形窗不能缩放 Tag:mainWnd %图形窗的句柄handles.mainWnd2) 静态文本编辑框的属性设置。 FontSize:15 %字体大小 FontUnits:points %字体大小的度量单位 HorizontalAlignment:Center %对齐方式 String:Expression %待显示的字符 Tag:text1 %该静态文本框的句柄handles.text1 Units:points %文本框度量单位
Units或FontUnits可选择:inches(英寸),centimeters(厘米),normalized(按比例缩放),points(点阵),pixels(像素),characters(字符)。如果选择normalized,那么当resize设为on时,控件或字体大小随着整个窗口的缩放而改变。水平对齐方式HorizontalAlignment可以是left,center,right。控件句柄Tag有默认值,建议修改为带有具体含义的字符串,以增加程序可读性和方便回调函数调用。3/21/2024113) 可编辑文本框的属性设置。 String:0 %初始状态下显示数字0 Tag:pExp %可编辑文本框的句柄 其它和静态文本框相同4) 单功能按钮属性设置。以按钮“1”为例 String:1 Tag:p1 其它和静态文本框相同。3.精细调整
利用对齐工具,排列控件的位置,使控件的大小、位置更加协调。3/21/202412 4.界面激活 保存静态界面后,利用工具栏上的运行按钮激活该界面。激活后可以看到两个同名文件:caculator.m和caculator.fig。 caculator.m文件在M文本编辑器中翻开,caculator.fig文件显示为操作界面,但是无法实现任何功能,需要编写回调函数。3/21/202413§2.4回调函数 在M文本编辑器中翻开caculator.m文件,可以看到自动生成的回调函数,该函数的命名利用对象句柄进行区分,没有任何执行语句。 回调函数:Tag_Callback(hObject,eventdata,handles),通过参加自己的处理语句,可以实现所需的功能。 其中: hObject是该控件的句柄; eventdata是备用参数,目前没有定义; handles是用户数据,本身是一个结构数组,存放了当前窗口的所有对象的句柄,包括图形窗本身、所有控件和菜单的句柄。并且可以增加一些域用来传递用户数据。 利用guidata(H,handles)可以更新H的用户数据。3/21/202414先设5个参数handles.start=1;%不能一开始输入运算符号handles.term=0;%运算完,进行新的运算handles.repeat=0;%不能重复输入运算符号handles.point=0;%不能重复输入点handles.bracket=0;%输入sin,cos,log,log10后不能在输入数字,只能输入运算符号3/21/202415只用编0的程序来说明,其他从1到9都是一样的程序functionpushbutton0_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton0(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)if(handles.start)%如果没有数字按入,一开始运算符号无法输入content='';set(handles.edit,'string',content);%把空的内容显示出来handles.start=0;guidata(hObject,handles);%更新句柄结构endcontent=get(handles.edit,'string');%把前面输入的内容保存在content中if(handles.term)%计算结束后,就为空,继续下一次输入content='';handles.term=0;guidata(hObject,handles);endif(handles.bracket)%sin,cos,log,log10输入后,不能在接数字,只能接运算符号guidata(hObject,handles);elseout=[content,'0'];%把0与前面的内容相连起来set(handles.edit,'string',out);%把新内容显示出来handles.repeat=0;%数字输入完可以输入运算符号了guidata(hObject,handles);end%---Executesonbuttonpressinpushbutton1.3/21/202416其他从1到9都是一样的程序functionpushbutton10_Callback(hObject,eventdata,handles)3/21/202417下面的程序是关于点的程序if(handles.point)%不能连续输入点guidata(hObject,handles);elsehandles.repeat=1;%输入点后不能在输入运算符号if(handles.start)%如果没有数字按入,一开始运算符号无法输入content='';set(handles.edit,'string',content);handles.start=0;guidata(hObject,handles);end3/21/202418content=get(handles.edit,'string');if(handles.term)content='';handles.term=0;guidata(hObject,handles);endout=[content,'.'];set(handles.edit,'string',out);handles.repeat=1;handles.point=1;guidata(hObject,handles);end3/21/202419下面是关于加法的程序functionpushbutton11_Callback(hObject,eventdata,handles)if(handles.start)%如果没有数字按入,一开始运算符号无法输入content='0.';set(handles.edit,'string',content);guidata(hObject,handles);elsecontent=get(handles.edit,'string');%把前面的内容取出来保存在content中handles.term=0;%可以进行运算3/21/202420handles.point=0;%可以输入点handles.bracket=0;%运算符号后可以输入sin,cos,log,log10if(handles.repeat)%前面有运算符号,就不允许在输入运算符号guidata(hObject,handles);elseout=[content,'+'];set(handles.edit,'string',out);handles.repeat=1;%输入加号后就把handles.repeat置1guidata(hObject,handles);endend3/21/202421下面是关于减法的程序if(handles.start)content='';set(handles.edit,'string',content);handles.start=0;guidata(hObject,handles);endcontent=get(handles.edit,'string');handles.term=0;handles.bracket=0;3/21/202422要注意reset后可以直接输入“-”,因为有负数if(handles.repeat)guidata(hObject,handles);elseout=[content,'-'];set(handles.edit,'string',out);handles.repeat=1;guidata(hObject,handles);end3/21/202423下面是关于sin的程序if(handles.start)content='0.';set(handles.edit,'string',content);guidata(hObject,handles);elsecontent=get(handles.edit,'string');3/21/202424text=strcat('sin(',content,')');%把sin()写显示出来括号里是前面输入的内容set(handles.edit,'string',text);%把内容显示出来handles.point=1;%sin后不能在允许在输入点handles.bracket=1;%sin()后不能直接跟数字guidata(hObject,handles);end3/21/202425下面是关于计算的程序if(handles.start)content='0.';set(handles.edit,'string',content);guidata(hObject,handles);else3/21/202426try%把显示的内容进行计算,把结果显示出来,如果出现计算错误,那么不显示content=get(handles.edit,'string');result=eval(content);%对字符型表达式进行计算set(handles.edit,'string',num2str(result));handles.term=1;handles.point=0;guidata(hObject,handles);catchguidata(hObject,handles);endend3/21/202427下面是关于reset的程序content='0.';set(handles.edit,'string',content);handles.start=1;handles.term=0;handles.repeat=0;handles.point=0;handles.bracket=0;guidata(hObject,handles);3/21/202428pushbuttontogglebuttonradiobuttoncheckboxedittextsliderframelistboxpopupmenuPosition四个参数的含义:[x_begin,y_begin,x_lenth,y_lenth]3/21/2024292.用户菜单制作函数 H=uimenu(H_parent,pName,pVariable,…) 其中,H_parent为菜单父句柄,可以是窗口或上一级菜单pName和pVariable成对出现,设置菜单的一个属性。 现场菜单(右键菜单) Hm=uicontextmenu; H=uimenu(Hm,pName,pVariable,…) Set(H_parent,‘uicontextmenu’,Hm) 其中,H_parent是与这个现场菜单相关联的对象的句柄。 利用H=uimenu和set(H)指令可以查看菜单的属性列表。常用的菜单属性:label:菜单显示的字符,&X形式代表简捷键,Alt+X作用callback:回调函数accelerator:快捷键,Ctrl+X作用separator:on/off该菜单上方显示分隔线checked:on/off该
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 疫情防控安全课件
- 疫情防控大数据解读课件
- 修剪树木承揽合同标准文本
- 共享医疗资源合同标准文本
- 2025新版园林绿化施工合同范本详细版
- 公务员政审评语大全3篇
- 二手房房屋买卖合同标准文本
- 保证合同范例解析
- 写印刷合同标准文本
- 供货产品合同标准文本
- 中国商帮江右商帮内容提要
- 养老护理员职业技能等级认定三级(高级工)理论知识考核试卷
- 煤矿供电保护接地知识的培训
- 上海交大科技成果转移转化实践简版
- 简单的设计合同(3篇)2023年
- 《阿Q正传》《边城》比较阅读课件28张 统编版高中语文选择性必修下册
- 2023年小学语文教师学科专业知识考试试题及答案
- GB/T 7702.5-1997煤质颗粒活性炭试验方法水容量的测定
- GB/T 17747.3-2011天然气压缩因子的计算第3部分:用物性值进行计算
- 变电站一键顺控操作过程常见异常与处置措施探讨
- 六年级下册语文人教部编版课件综合性学习:奋斗的历程(课件)
评论
0/150
提交评论