(精品)华北水院第7章MATLAB图形界面设计.ppt
《(精品)华北水院第7章MATLAB图形界面设计.ppt》由会员分享,可在线阅读,更多相关《(精品)华北水院第7章MATLAB图形界面设计.ppt(95页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、nMATLAB的的GUI程程序序设设计计可可以以用用两两种种方方式式实实现现,一一种种是是借借助助GUI开开发发工工具具GUIDE,一一种种是是利利用用m文文件件代代码码构构建建界界面面。采采用用GUIDE进进行行设设计计的的方方法法直观方便,容易上手。直观方便,容易上手。n本章主要介绍利用本章主要介绍利用GUIDE方法进行设计的步骤。方法进行设计的步骤。第第7章章MATLAB 图形界面设计图形界面设计7.1 GUI设计工具设计工具Guide简介简介nMATLAB提供了用户图形界面开发程序提供了用户图形界面开发程序GUIDE,支,支持可视化编辑。持可视化编辑。n它是一种基于事件或者说是事件驱动
2、的程序(它是一种基于事件或者说是事件驱动的程序(event driven),类似于方便易用的),类似于方便易用的Visual Basic。7.1.1 GUIDE的启动的启动n可以如下不同方式启动可以如下不同方式启动GUIDE:n1.在命令窗口提示符下输入在命令窗口提示符下输入guide;n2.在工具栏选打开;在工具栏选打开;n3.在在Start菜单中选菜单中选MATLAB ;n4.MATLAB File 菜单中选菜单中选New GUI。空白界面有控件的模板界面有轴对象和菜单的模板界面标准询问窗口7.1.2 GUI界面的创建n用户创建创建新的GUI,也可打开打开已有的GUI。创建界面时还可在模板
3、基础上进行,在选择GUI模板时,启动界面右侧提供了预览。以以“GUI with axes and menu”模板创建的模板创建的GUI初始界面初始界面。GUIDE工具栏上的工具按钮 u对象浏览器对象浏览器(Object Browser)用于获得当前Matlab图形用户界面程序中的全部对象信息,对象的类型,同时显示控件的名称和标识,在控件上双击鼠标可以打开该控件的属性编辑器;u布局编辑器布局编辑器(Layout Edtor)在图形窗口中创建及布置图形对象。布局编辑器是可以启动用户界面的控制面板,上述工具都必须从布局编辑器中访问,用用guide命令可以启动,命令可以启动,或在启动平台窗口中选择或在
4、启动平台窗口中选择GUIDE来启动布局编辑器;来启动布局编辑器;u几何排列工具几何排列工具(Alignment Tool)调整各对象相互之间的几何关系和位置;u属性查看器属性查看器(Property Inspector)查询并设置属性值;u菜单编辑器菜单编辑器(Menu Editor)创建、设计、修改下拉式菜单和快捷菜单;uTab顺序编辑器顺序编辑器(Tab Order Editor)用于设置当用户按下键盘上的Tab键时,对象被选中的先后顺序。用户控件用户控件n n 对象选择按钮,用来选取工作区的控件。单功能按键,按下操作代表一定功能实现。双位按键,代表“开”“关”两种状态。互斥选择按钮,多个
5、选项互斥选择时使用。互容选择按钮,同时选中多个选项时使用。编辑文本框,可以自由输入字符和字符串静态文本框,用于显示注释,不可编辑。滑动块,利用游标滑动,可以获取不同值。控件区域框,用于对控件区域进行标识。列表框,提供多个互容的可供选择选项。弹出框,有多个选项,只能选择其中一项。轴对象,用来显示图形。按钮按钮(Push Buttons):执行某种预定的功能或操作;开关按钮开关按钮(Toggle Button):产生一个动作并指示一个二进制状态(开或关),当鼠点击它时按钮将下陷,并执行callback(回调函数)中指定的内容,再次点击,按钮复原,并再次执行callback 中的内容;单选框单选框(
6、Radio Button):单个的单选框用来在两种状态之间切换,多个单选框组成一个单选框组时,用户只能在一组状态中选择单一的状态,或称为单选项;复选框复选框(Check Boxes):单个的复选框用来在两种状态之间切换,多个复选框组成一个复选框组时,可使用户在一组状态中作组合式的选择,或称为多选项;文本编辑器文本编辑器(Editable Texts):用来使用键盘输入字符串 的值,可以对编辑框中的内容进行编辑、删除和替换等操作;静态文本框静态文本框(Static Texts):仅用于显示单行的说明文字;滚动条滚动条(Slider):可输入指定范围的数量值;边框边框(Frames):在图形窗口圈
7、出一块区域;列表框列表框(List Boxes):在其中定义一系列可供选择的字符串;弹出式菜单弹出式菜单(Popup Menus):让用户从一列菜单项中选择一项作为参数输入;此外还有坐标轴(Axes),用于显示图形和图象。修改控件属性修改控件属性n每个控件不可能是完全符合界面设计要求的,需要对其属性进行设置,以获得所需界面显示效果。可以通过双击该控件,或利用下拉菜单View:Property Inspector打开控件属性对话框。例如右图是“+”按钮的属性列表。n下面对各控件的主要属性进行一下说明。n1)双击设计工作区空白部分,打开整个图形窗属性框。nMunuBar:none%图形窗是否使用标
8、准菜单nName:caculator%图形窗名称nResize:off%图形窗不能缩放nTag:mainWnd%图形窗的句柄handles.mainWndn2)静态文本编辑框的属性设置。nFontSize:15%字体大小nFontUnits:points%字体大小的度量单位nHorizontalAlignment:Center%对齐方式nString:Expression%待显示的字符nTag:text1%静态文本框句柄handles.text1nUnits:points%文本框度量单位 Units或或FontUnits可选择:可选择:inches(英寸英寸),centimeters(厘米厘米
9、),normalized(按比例缩放按比例缩放),points(点阵点阵),pixels(像素像素),characters(字符字符)。如果选择。如果选择normalized,那么当,那么当resize设为设为on时,控件或字体大小随着整个窗口的缩放而改时,控件或字体大小随着整个窗口的缩放而改变。变。水平对齐方式水平对齐方式 Horizontal Alignment可以是可以是left,center,right。控件句柄控件句柄Tag有默认值,建议修改为带有具体含义的字有默认值,建议修改为带有具体含义的字符串,以增加程序可读性和方便回调函数调用。符串,以增加程序可读性和方便回调函数调用。n3)
10、可编辑文本框的属性设置。nString:0%初始状态下显示数字0nTag:pExp%可编辑文本框的句柄n其它和静态文本框相同n4)单功能按钮属性设置。以按钮“1”为例nString:1nTag:p1n其它和静态文本框相同。n界面激活n保存静态界面后,利用工具栏上的运行按钮激活该界面。激活后可以看到两个同名文件:m和fig。nm文件在M文本编辑器中打开,fig文件显示为操作界面,但是无法实现任何功能,需要编写回调函数。n精细调整n利用对齐工具,排列控件的位置,使控件的大小、位置更加协调。n精细调整n利用对齐工具,排列控件的位置,使控件的大小、位置更加协调。回调函数回调函数n在M文本编辑器中打开m
11、文件,可以看到自动生成的回调函数,该函数的命名利用对象句柄进行区分,没有任何执行语句。n回调函数:Tag_Callback(hObject,eventdata,handles),通过加入自己的处理语句,可以实现所需功能。n其中hObject是控件的句柄;eventdata是备用参数,目前没有定义;handles是用户数据,本身是一个结构数组,存放了当前窗口的所有对象的句柄,包括图形窗本身、所有控件和菜单的句柄。并且可以增加一些域用来传递用户数据。n利用guidata(H,handles)可以更新 H 的用户数据。7.2 GUI程序设计示例程序设计示例n本节通过示例,演示本节通过示例,演示MAT
12、LAB的的GUI程序设计。程序设计。“Hello World”程序的设计n下面以一个类似于学习其它程序设计的第一个程序“Hello World”为例,讲解GUIDE的有关知识。n程序的目标是当按下按钮时,由文本控件显示“Hello World”。显示控件名称的设置界面 对界面左侧的控件如果不够熟悉的话,可以通过FilePreferences选项,选中“Show names in component palette”GUI设计界面在显示控制图标的同时,还显示控件名称 n1.“Hello World”程序界面设计n2.“Hello World”程序的设计n3.程序测试运行nGUI设计中的界面设计部
13、分比较容易。在窗口上添加一个按钮控件(Push Button)和一个文本控件(Static Text)。可双击控件调出属性编辑器进行其属性设置。n设按钮控件的“String”属性为“问候”,“Tag”属性为“helloBt”,见右图按钮属性设置 n设置文本控件的“String”属性为空,表示初始状态下不显示任何信息,“Tag”属性为“helloStr”,为显示清楚,设其“FontSize”属性为“28”。见右图文本控件属性设置 n“Tag”属性设置要唯一,因为“Tag”属性是唯一标识控件的。n至此,我们的界面设计工作完成。n保存时,会生成2个文件,helloworld.fig,hellowor
14、ld.m。n此外可通过ToolsMenu Editor进行类似于Windows程序的菜单设计。编辑窗口见左图,效果见右图。菜单设计的编辑窗口菜单效果图利用菜单编辑器可创建、设置、修改下拉式菜单和快捷菜单。选择 Tools 菜单的 Menu Editor.子菜单,可打开菜单编辑器。菜单编辑器菜单编辑器(Menu Editor)菜单可通过编程实现,从GUI设计窗口的工具栏上选择Menu Editor命令按钮,打开菜单编辑程序。菜单编辑器包括菜单的设计和编辑,菜单编辑器有八个快捷键,可以利用它们任意添加或删除菜单,可以设置菜单项的属性,包括名称(Label)、标识(Tag)、选择是否显示分隔线(Se
15、parator above this item)、是否在菜单前加上选中标记(Item is checked)、调用函数(Callback)。菜单编辑器左上角的第一个按钮用于创建一级菜单项。第二个按钮用于创建一级菜单的子菜单。菜单编辑器左下角有两个按钮,选择第一个按钮可创建下拉式菜单。选择第二个按钮可创建Context Menu菜单。选择它后,菜单编辑器左上角的第三个按钮就会变成可用,单击它就可以创建Context Menu主菜单。在选中已经创建的Context Menu主菜单后,可以单击第二个按钮创建选中的Context Menu主菜单的子菜单。与下拉式菜单一样,选中创建的某个Context
16、Menu菜单,菜单编辑器的右边就会显示该菜单的有关属性,可以设置、修改菜单属性。菜单编辑器左上角的第四个与第五个按钮用于对选中的菜单进行左移与右移,第六与第七个按钮用于对选中的菜单进行上移与下移,最右边的按钮用于删除选中的菜单。n按照要求,我们可以给按钮添加动作,即给它编写一个回调函数(Callback)。n右键单击按钮,选择View CallbacksCallback自动打开helloworld.m文件并指向该回调函数。n根据需要为其添加语句。程序将句柄集handles的helloStr(即文本控件)“String”属性设置为“Hello World”,即完成了设计要求。n下面这段程序的意思
17、是当点击按钮时,即由程序设置文本控件的“String”属性值为“Hello World”。function helloBt_Callback(hObject,eventdata,handles)set(handles.helloStr,String,Hello World!);n注意回调函数的概念,它指的是在对象的某一个事件发生时,MATLAB内部机制允许自动调用的函数。n其几个参数的意思分别为 hObject表示当前窗口的句柄;eventdata表示事件代码,为保留 handles是该窗口中的所有句柄的集合。n回调函数有的是针对窗口而言的,有的是对具体控件而言的,学会回调函数的编写有助于高效
18、编写MATLAB GUI程序 n在程序编辑窗口运行测试,或在命令窗口键入程序名称“helloworld”,即可运行。如下图:n注意:当不小心将helloworld.fig关掉后,再次编辑需要重新打开。其方法可以通过FileNewGUIOpen Existing GUI来打开。如按照一般理解选择FileOpen项的话,只能打开其运行窗口而不可编辑。例例10 使用Push Button按钮与静态文本框设计GUI,在窗口中显示单击按钮次数。(1)在界面上安装一个命令按钮和一个静态文本框(2)使用对象的属性窗口设置控件的属性(3)打开该GUI的 m 文件,文件中已经自动生成代码。找到函数functio
19、n pushbutton1_Callback(hObject,eventdata,handles)在这个函数名称下面写入如下程序段:persistent cif isempty(c)c=0endc=c+1;str=sprintf(Total Clicks:%d,c);set(handles.text1,String,str);保存程序后,单击Click按钮,则在什么的文本框中显示单击次数。例例11 制作一个简易的加减法计算器。(1)在界面上安装两个编辑文本框、一个静态文本框与两个命令按钮(2)使用对象的属性窗口设置控件的属性(3)打开该GUI的 m 文件ex11.m,在函数pushbutton
20、1_Callback 与 pushbutton2_Callback中加入代码,如下所示:function pushbutton1_Callback(hObject,eventdata,handles)s1=str2double(get(handles.edit1,String)s2=str2double(get(handles.edit2,String)set(handles.text1,String,s1+s2);function pushbutton2_Callback(hObject,eventdata,handles)s1=str2double(get(handles.edit1,St
21、ring)s2=str2double(get(handles.edit2,String)set(handles.text1,String,s1-s2);例例12 使用3个单选钮控制静态文本框的背景颜色。function radiobutton1_Callback(hObject,eventdata,handles)set(handles.text1,BackGroundColor,r)function radiobutton2_Callback(hObject,eventdata,handles)set(handles.text1,BackGroundColor,g)function radi
22、obutton3_Callback(hObject,eventdata,handles)set(handles.text1,BackGroundColor,b)function slider1_Callback(hObject,eventdata,handles)v=get(handles.slider1,Value);str=sprintf(%.2f,v);set(handles.text1,String,str);例例13 使用滚动条。例例14 制作一个根据密度与体积计算质量的简易计算器。(1)在界面上布置控件对象。(2)使用对象的属性窗口设置控件的属性。例例15 使用程序把基本控件安装在
23、图形窗口上。h1=uicontrol(style,edit,TooltipString,Edit Text)h2=uicontrol(style,checkbox,Position,90,20,30,20,TooltipString,Checkbox)h3=uicontrol(style,listbox,Position,150,20,40,20,TooltipString,Listbox)h4=uicontrol(style,pushbutton,Position,210,20,30,20,TooltipString,Pushbutton)h5=uicontrol(style,radiobu
24、tton,Position,260,20,30,20,TooltipString,Radiobutton)h6=uicontrol(style,slider,Position,310,20,30,20,TooltipString,Slider)h7=uicontrol(style,text,Position,370,20,30,20,TooltipString,Static Text)h8=uicontrol(style,toggle,Position,430,20,30,20,TooltipString,Togglebutton)上面程序虽然实现了控件的安装,但是,还不能完成具体的功能。如果
25、要完成特定的功能,需要加入其他语句。例例16 在图形窗口底部安装一个命令按钮、一个可编辑文本框、一个静态文本框。针对命令按钮(pushbutton)编写程序,使程序运行后,点击该命令按钮,便随机绘制出一些折线;同时可编辑文本框背景色变为蓝色,静态文本框背景色变为红色。h1=uicontrol(style,pushbutton,Position,280,0,50,20)set(h1,String,PUSH,Callback,fun)主程序只创建安装了一个Pushbutton按钮,然后,在set语句中使用Callback属性调用函数fun。主程序设计如下:function fun plot(ran
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 华北 水院第 MATLAB 图形界面 设计
限制150内