MATLAB8.5教程第11章图形用户界面(GUI)设计.ppt
图形用户界面是由窗口、光标、按键、菜单、文字说明等对象构成的一个用户界面。用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,譬如实现计算、绘图等。若想制作一个供反复使用且操作简单的专用工具,则图形用户界面也许是最好的选择之一。本章重点GUIDE界面环境GUI创建过程GUI菜单设计对话框设计,第十一章 图形用户界面(GUI)设计,11.1 GUIDE界面环境,MATLAB中的GUIDE提供多种设计GUI模板,并自动生成M文件框架,用户可以在该框架内编写自己的函数代码,实现用户所需要的功能。,11.1.1 GUIDE启动及界面组成,1GUIDE启动MATLAB图形用户界面开发环境DUIDE(GUI Developer的缩写)提供了一系列图形用户界面GUI的工具,这些工具可以极大简化GUI设计和生成的过程。打开MATLAB操作桌面主页下的新建按钮,从弹出的菜单选择,或直接在MATLAB命令行窗口输入guide,都可弹出对话窗“GUIDE Quick Start”界面,如图11-1所示。图11-1 进入GUIDE开发环境的默认引导对话窗,2GUIDE界面组成“GUIDE Quick Start”界面包括两个选项:“Create New GUI”(创建新的图形用户界面)和“Open Existing GUI”(打开已存在的图形用户界面)。其中“Create New GUI”提供四种基本类型的GUI模板:Black GUI(Default):空白模板(缺省)。GUI with Uicontrols:带有控件对象的GUI模板。GUI with Axes and Menu:带有坐标轴与菜单的GUI模板 Modal Question Dialog:问答式对话框的GUI模板。通过这些模板可快速创建GUI。选定一种模板以后,它的预览效果显示在右边的面板中。譬如选中“GUI with Uicontrols”,显示在面板中的预览效果如图所示11-2所示,图11-2“GUI with Uicontrols”预览效果图,11.1.2 输出编辑器,在“GUIDE Quick Start”对话窗中,点击“Create New GUI”选项卡,选择“Black GUI”选项,打开的就是“带有空白GUI模板的输出编辑器”窗口,如图11-3所示。图11-3 输出编辑器窗口及功能,(1)控件与组件打开图11-3中的【FilePreferencesGUIDE】勾选【show names in component palette】,则在输出编辑器界面上显示GUI各控件名称,包括触控按钮、开关按钮、单选框、复选框、文本编辑器、静态文本框、滑动条、列表框、弹出式菜单、表格、坐标轴、面板、按钮组、ActiveX控件等,如图11-4所示。,(2)GUI设计版面GUI设计版面是GUI布局区,即中间位置全部空白处,用于摆放GUI控件对象。,(3)对象对齐(Align Objects)对象对齐主要用来将所选择的控件对齐。对齐方式有垂直(Vertical)和水平(Horizontal)两种,其中【Align】表示选中的控件组以何种方式对齐,包括上对齐、下对齐、左对齐、右对齐和居中等;【Distuibute】则是设置控件在指定方向上的间隔,如图11-5所示。,图11-5 对象对齐方式,(4)菜单编辑器(Menu Editor)菜单编辑器用于建立菜单栏和右键菜单。点击工具栏上的菜单编辑器图标,打开菜单编辑器“Menu Editor”窗口,如图11-6所示,图中已给出了工具栏图标的功能。图11-6 菜单编辑器窗口,在操作时点击【To add a menu,】处,或者工具栏中的图标,则窗口中出现菜单图标【Untitled 1】,再点击图标【Untitled 1】,则显示带有菜单属性【Menu Properties】的界面,如图11-7所示。图11-7 带有属性的菜单编辑器窗口,其中,面板【Menu Properties】包括【Label:设定菜单名】、【Tag:设定菜单识别名】、【Accelerator:Ctrl+:设定快捷键】、【Separator above this item:与上一选项之间是否隔开】、【Check mark this item:设置是否标记该选项】、【Enable this item:设置该选项是否可选】、【View:设置回调函数】和【More Properties:打开属性浏览器】等属性。,(5)工具条编辑器(Toolbar Editor)工具条编辑器用于定制自定义的工具栏,由工具面板(Tool Palette)、属性面板(Tool Properties与Toolbar Properties)和工具栏布局预览区等板块组成,其中工具面板包括用户自创工具(Custom Tools)和标准工具(Predefined),如图11-8所示。它不能用来修改MATLAB内建的标准工具栏,但可以用来增加、修改、和删除自定义的工具栏。,(6)M文件编辑器点击M文件编辑器,系统自动产生M文件(或打开已建立的M文件),如图11-9所示。文件内的程序包括各种控件的回调函数和注释等。用户只需在各控件的回调函数下面填写代码,通过编写程序来控制控件的动作。在系统运行过程中当触发到某控件时,相应的回调函数就会执行。控件的属性tag是唯一标识符,通过它来识别控制对象。,(7)属性查看器属性查看器是用来查看、设置或修改控件的属性。点击工具栏属性查看器弹出界面figure的属性窗口,如图11-10所示。它常用来修改界面的名称,如将【Name】处的“untitled”改为中文名称。若选中界面中的某一控件,再点击属性查看器,则弹出这一控件的属性窗口。譬如触控按钮【Push Button】的属性窗口如图11-11所示。,11.1.3 控件功能与属性,1控件与组件的功能输出编辑器中的控件大致可分为两种:一种为动作控件,鼠标点击这些控件时会产生相应的响应;另一种为静态控件,是一种不产生响应的控件,如文本框等。控件的功能如表11-1所示。,(2)控件属性每种控件都有一些可以设置的参数,用于表现控件的外形、功能及效果,即属性。修改控件属性可调用属性查看器(Property Inspector),其包括属性名和属性值,表11-2中给出了【Push Button】属性说明。,11.1.4 界面的存储及运行,保存的同时会在当前路径下自动产生两个文件:一个是“gui.fig”文件,另一个是“gui.m”文件。其中,“gui.fig”文件包含对GUI和GUI组件的完整描述,它也是打开输出编辑器界面“gui.fig”窗口的文件;“gui.m”文件包含控制GUI的代码、组件的回调函数。,11.1.5 回调函数,实现GUI的基本机制是对控件的Callback(回调函数)属性编程,当在设计界面上选中一个控件后,选择菜单栏中的“View”“View Callbacks”命令,或点击鼠标右键,从弹出的活动菜单选择“View Callback”,就会出现“Callbacks”、“CreateFcn”、“DeleteFcn”、“ButtonDownFcn”和“KeyPressFcn”子选单项,这些选项都是用来编写回调函数的,其作用如下:,CallBack:为一般回调函数,因不同的控件而不同,譬如,按钮被按下时发生、下拉框改变值时发生、sliderbar 拖动时发生等等。大多数MATLAB程序代码都在这里编写,它实现诸多功能。CreateFcn:是在控件对象创建的时候发生(一般为初始化样式,颜色,初始值等)。DeleteFcn:是在空间对象被清除的时候发生。ButtonDownFcn:为鼠标点击事件的回调函数。KeyPressFcn:为按键事件的回调函数。,回调函数(CallBack)包含在由GUEDE形成的M文件当中,GUIDE会自动生成相应的函数体、函数名,名称一般是控件“Tag+Call”类型名,参数有三个(hObject,eventdata,handles),其中 hObject 为发生事件的源控件,eventdata为事件数据结构,handles为传入的对象句柄。具体格式为:,11.2 GUI的创建过程,下面以简单的“四则运算器”界面为例,说明用GUIDE创建GUI的全过程。1打开输出编辑器点击MATLAB主界面工具栏GUIDE图标,打开如图11-1的窗口,选择空模板【Blank GUI】,点击【OK】,即可打开如图11-3所示的GUIDE的输出编辑器设计界面“untitled.fig”。,2界面布局添加需要的控件摆放到输出编辑器“untitled.fig”中合适的位置,对多个同样的控件,为摆放整齐,可以打开工具栏中的对象对齐(Align Objects)图标,进行各种方式处理。并可用鼠标选中右下角的版面大小控制句柄来缩放版面。选择5个静态文本框【Static Text】,其中4个用来做文本标签,一个用来显示结果;2个编辑文本框【Edit Text】,用来输入数据;2个面板【Panel】和4个触控按钮【Pushbutton】,分别用鼠标拖到“untitled.fig”窗口中,其摆放位置如图1-15所示。,3编辑控件的属性利用属性查看器(Property Inspector),设置各个控件的参数(见表11-3所示),到此为止我们完成了用GUIDE创建GUI的整个过程,这也是利用MATLAB GUI开发软件系统的步骤。为提高系统界面的可读性,开发完整个系统之后,可将界面标题改成中文名称。,11.3 GUI菜单设计,11.4 对话框设计,利用MATLAB编程GUI时,我们可能需要很多对话框给用户进行提示信息,供用户进行选择。对话框带有提示信息和按钮等控件,MATLAB提供了多种创建专用对话框的命令。1信息对话框(msgbox)格式:msgbox(Message,Title,Icon)说明:Message表示显示的信息(字符串);Title表示对话框标题(字符串);Icon表示对话框图标,可选择none(默认值,无图标)、error(错误提示图标)、help(帮助提示图标)、warn(警告提示图标)和custom(用户自创图标)。例如:msgbox(欢迎进入GUIDE界面,GUI,warn),图11-42 信息对话框,信息对话框不接受用户的任何输入,在用户单击“OK”按钮后,对话框自动关闭,然后返回程序中继续执行。,2错误对话框(errordlg)格式:errordlg(ErrorString,DlgName)说明:ErrorString表示显示错误信息的字符串;DlgName表示对话框标题(字符串)。例如:errordlg(这是一个错误对话框,MATLAB error)显示结果如图11-43所示。,3警告对话框(warndlg)格式:warndlg(WarnString,DlgName)说明:WarnString表示显示警告信息的字符串;DlgName表示对话框标题(字符串)例如:warndlg(这是一个警告对话框,MATLAB warning)显示结果如图11-44所示。,图11-44警告对话框,4帮助对话框(helpdlg)格式:helpdlg(HelpString,DlgName)说明:HelpString表示显示帮助信息的字符串;DlgName表示对话框标题(字符串)。例如:helpdlg(你需要帮助吗?,MATLAB Help)图11-45 帮助对话框,5进度条对话框(waitbar)格式:waitbar(X,title)说明:X为进度条的比例长度,其值必须在0都1之间;title:显示提示信息例如:waitbar(0,请稍等.)图11-46 进度条对话框,6输入对话框(inputdlg)格式:inputdlg(Prompt,Title,Numlines,DefAns,Resize)说明:Prompt表示显示的提示信息(单元数组);Title表示对话框标题(字符串);Numlines表示指定输入数据的行数;DefAns表示一单元数组,存储每个输入数据的默认值,元素个数必须与Prompt 所定义的输入窗口数相同,所有元素必须是字符串;Resize表示设定对话框尺寸是否可调节(on/off)。,7列表对话框(listdlg)格式:sel,ok=listdlg(ListString,S)说明:ListString 表示设置备选项,备选项S为字符串或者字符串数组。输入参数项还可以添加其它成对的属性及属性值。如:Name 表示设置对话框标题;PromptString 表示设置提示字符;SelectionMode 表示设置是否多选,single 表示单选,multiple 表示多选。文件选择成功后,单击【OK】按钮,系统将选择好的文件序号存入相应向量sel,参数ok的值为1。,例如:str=加法,减法,乘法,除法;sel,ok=listdlg(ListString,str,.Name,请选择一种运算方法,.PromptString,请选择,.SelectionMode,single)显示结果如图1-49所示。,8问题对话框(questdlg)格式:questdlg(Question,Title)%默认值,回答按钮有三个:Yes、No、CancelQuestdlg(Question,Title,Btn1,Btn2,Btn3,Default)%自定义回答按钮说明:Question表示显示的问题信息(字符串);Title表示对话框标题(字符串)。,9打开文件对话框(uigetfile)格式:FileName,PathName,FilterIndex=uigetfile(FilterSpec,Title)FileName,PathName,FilterIndex=uigetfile(FilterSpec,Title,File)说明:FilterSpec表示文件类型设置(字符串);Title表示对话框标题(字符串);File表示默认指向的文件名(字符串);FileName表示返回的文件名;PathName表示返回的文件的路径名;FilterIndex表示选择的文件类型。,(1)MATLAB默认的打开文件方式:FileName,PathName=uigetfile(*.m;*.mdl;*.mat;*.*,File Selector);显示结果如图11-52所示。,图11-52 默认打开文件对话框,(2)打开一个选择多种文件的对话框,并设置文件类型:FileName,PathName,FilterIndex=uigetfile(.*.m;*.fig;*.mat;,All MATLAB File(*.m,*.fig,*.mat,*.mdl);*.m,M-file(*.m);.*.fig,Figure(*.fig);.*.mat,MAT-flie(*.mat);.*.mdl,Models(*.mdl);.*.*,All Flies(*.*),.Pick a file);显示结果如图11-53所示,图11-53 打开文件对话框,10文件保存对话框(uiputfile)格式:FileName,PathName,FilterIndex=uiputfile(FilterSpec,Title)FileName,PathName,FilterIndex=uiputfile(FilterSpec,Title,File)说明:FilterSpec表示文件类型设置(字符串);Title表示对话框标题(字符串);File表示默认指向的文件名(字符串);FileName表示返回的文件名;PathName表示返回的文件的路径名;FilterIndex表示选择的文件类型。,(1)建立一种保存文件的对话框:FileName,PathName=uiputfile(*.m,Save selected a M-file)显示结果如图11-54所示。,图11-54 默认文件保存对话框,(2)建立多种保存文件的对话框,并选择一种文件保存类型:FileName,PathName,FilterIndex=uiputfile(.*.m;*.fig;*.mat;,All MATLAB File(*.m,*.fig,*.mat,*.mdl);*.m,M-file(*.m);.*.fig,Figure(*.fig);.*.mat,MAT-flie(*.mat);.*.mdl,Models(*.mdl);.*.*,All Flies(*.*),.Save a file)显示结果如图11-55所示。,11.5.2 统计量计算界面设计,统计量计算界面主要处理描述集中程度的均值、中位数和众数,离散程度的方差、标准差、极差、最大值、最小值和变异系数以及偏度、峰度和直方图等内容。,(1)界面组成。首先打开一个空白输出编辑器出口,并从控件中选取16个静态文本框(Static Text)、14个编辑文本框(Edit Text)、1个触动按钮(Push Button)、3个面板(Panel)和一个坐标轴(axes1)控件,这些控件标签都是英文,其作用和含义主要让这些控件表示如图11-64所示的中文名称含义。(具体操作,是通过完成下面的第2步控件属性设计来实现),(2)控件属性设计。每个控件都要通过其【属性查看器】进行设计,其中界面中的14个编辑文本框,除了“输入数据”编辑文本框外,其余13个编辑文本框的【Enable】属性都设计成【inactive】,其作用同静态文本一样,用来显示字符串数值,在这里主要是为了美观,以边框的方式呈现。各个控件的主要属性设计见表11-5。,(3)保存界面。单击输出编辑器窗口的保存按钮,并把界面命名为“tjljs”,这时系统自动生成“tjljs.fig”和“tjljs.m”两个文件。其中“tjljs.m”文件用来实现控件功能,需要用户自己添加程序。,