1学习本教程的目的:学会用matlabgui设计用户界面,并编写响应程序。一、GUI基础知识图形用户界面(GraphicalUserInterfaces,GUI)则是由窗口、光标、按键、菜单、文字说明等对象(Objects)构成的一个用户界面。用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。Matlab中设计图形用户界面的方法有两种:使用可视化的界面环境和通过编写程序。本教程主要通过使用可视化的界面环境来实现GUI界面的设计2启动matlab的GUI界面在matlab主界面的菜单栏File中New下的GUI,如图1所示图1单击GUI后会出现如图2界面图23Matlab为GUI设计一共准备了4种模板,分别是:BlankGUI(Default)(空白模板,默认);GUIwithUicontrols(带控件对象的GUI模板);GUIwithAxesandMenu(带坐标轴与菜单的GUI模板);ModalQuestionDialog(带模式问题对话框的GUI模板)。我们入门时经常会使用第一个模板,即BlankGUI(空白模板)。单击图2中的ok会出现下图界面(图3)图3图形用户界面GUI设计窗口由菜单栏、工具栏、控件工具栏以及图形对象设计区等4个功能区组成。4菜单栏:GUI设计窗口的菜单栏有File、Edit、View、Layout、Tools和Help6个菜单项,使用其中的命令可以完成图形用户界面的设计操作。工具栏:编辑工具在菜单栏的下方,提供了“编程”时常用的工具,例如可以进行保存、撤销、运行等等操作。控件工具栏:各个模块位于窗口的左半部分,提供了设计GUI过程中所用的用户控件;了解各个模块(用户控件)的用途和作用对GUI的设计起到比较大的作用。图形对象设计区:该区域是网格形式的用户设计GUI的空白区域,可以把用户控件做到区域里。对matlab菜单栏中部分内容的解释布局编辑器(LayoutEdtor)——在图形窗口中创建及布置图形对象。布局编辑器是可以启动用户界面的控制面板,LayoutEdtor用于从控件选择板上选择控件对象并放置到布局区去,布局区被激活后就成为图形窗口。菜单编辑器(MenuEditor)——创建、设计、修改下拉式菜单和快捷菜单;对象浏览器(ObjectBrowser)——用于获得当前Matlab图形用5户界面程序中的全部对象信息,对象的类型,同时显示控件的名称和标识,在控件上双击鼠标可以打开该控件的属性编辑器;属性查看器(PropertyInspector)—查询并设置属性值;同图4Tab顺序编辑器(TabOrderEditor)——用于设置当用户按下键盘上的Tab键时,对象被选中的先后顺序。M-文件编辑器(M-fileEditor)—用于编辑控件对象的回应函数,在该m-文件中编程,既可把各个控件对象联系在一起,来实现想要实现的功能。控件工具①按钮(PushButtons):执行某种预定的功能或操作(左二)②单选框(RadioButton):单个的单选框用来在两种状态之间切换,多个单选框组成一个单选框组时,用户只能在一组状态中选择单一的状态,或称为单选项;(左三)6③文本编辑器(EditableTexts):用来使用键盘输入字符串的值,可以对编辑框中的内容进行编辑、删除和替换等操作;(左四)④弹出式菜单(PopupMenus):让用户从一列菜单项中选择一项作为参数输入;(左五)⑤开关按钮(ToggleButton):产生一个动作并指示一个二进制状态(开或关),当鼠点击它时按钮将下陷,并执行callback(回调函数)中指定的内容,再次点击,按钮复原,并再次执行callback中的内容;(左六)⑥坐标轴(Axes):用于显示图形和图象。(左七)⑦滚动条(Slider):可输入指定范围的数量值(右一)⑧复选框(CheckBoxes):单个的复选框用来在两种状态之间切换,多个复选框组成一个复选框组时,可使用户在一组状态中作组合式的选择,或称为多选项;(右二)7⑨静态文本框(StaticTexts):仅用于显示单行的说明文字(右三)⑩列表框(ListBoxes):在其中定义一系列可供选择的字符串;(右四)8控件对象的公共属性双击模块(控件对象)就会进入一个属性设置与修改的区域,如下图(图4)所示,通过修改一些参数,就可以改变模块的外在形式。图49控件对象公共属性:Children取值为空矩阵,因为控件对象没有自己的子对象;Parent取值为某个图形窗口对象的句柄,该句柄表明了控件对象所在的图形窗口;Tag取值为字符串,定义了控件的标识值,在任何程序中都可以通过这个标识值控制该控件对象;Type取值为uicontrol,表明图形对象的类型;UserDate取值为空矩阵,用于保存与该控件对象相关的重要数据和信息;Visible取值为on或off。BackgroundColor取值为颜色的预定义字符或RGB数值;缺省值为浅灰色;Callback取值为字符串,可以是某个M文件名或一小段Matlab语句,当用户激活某个控件对象时,应用程序就运行该属性定义的子程序;Enable取值为on(缺省值),inactive和off;Extend取值为四元素矢量[0,0,width,height],记录控件对象标题字符的位置和尺寸;ForegroundColor取值为颜色的预定义字符或RGB数值,该属性定义控件对象标题字符的颜色;缺省值为黑色;Max,Min取值都为数值,缺省值分别为1和0;String取值为字符串矩阵或块数组,定义控件对象标题或选项10内容;Style取值可以是pushbutton(缺省值),radiobutton,checkbox,edit,text,slider,frame,popupmenu或listbox;Units取值可以是pixels(缺省值),normalized(相对单位),inches,centimeters(厘米)或points(磅);Value取值可以是矢量,也可以是数值,其含义及解释依赖于控件对象的类型。FontAngle取值为normal(正体,缺省值),italic(斜体),oblique(方头);FontName取值为控件标题等字体的字库名;FontSize取值为数值;FontUnits取值为points(缺省值),normalized,inches,centimeters或pixels;FontWeight取值为normal(缺省值),light,demi和bold,定义字符的粗细;HorizontalAligment取值为left,center(缺省值)或right,定义控件对象标题等的对齐方式。ListboxTop取值为数量值,用于listbox控件对象;SliderStep取值为两元素矢量[minstep,maxstep],用于slider控件对象;Selected取值为on或off(缺省值);SlectionHoghlight取值为on或off(缺省值)。11BusyAction取值为cancel或queue(缺省值);ButtDownFun取值为字符串,一般为某个M文件名或一小段Matlab程序;Creatfun取值为字符串,一般为某个M文件名或一小段Matlab程序;DeletFun取值为字符串,一般为某个M文件名或一小段Matlab程序;HandleVisibility取值为on(缺省值),callback或off;Interruptible取值为on或off(缺省值)。设计时用到某个参数,到这里查找即可12讲到这里,问大家一个问题:为什么要在matlab中创建GUI用户界面?这是一个很好的问题,简单的回答是可能并不需要.使用MATLAB来分析数据,求解问题,绘制结果的绝大多数的人,并不会发现GUI工具很有用。但是,GUI可以在MATLAB中生成非常有效的工具和应用程序,或是建立演示工作的交互式界面。生成用户图形界面的最常见的理由:•编写一个需多次反复使用的实用函数,菜单、按钮、文本框作为输入方法具有意义;•编写函数或开发应用程序供别人使用;•创建一个过程、技术或分析方法的交互式示例;•认为GUI的简洁,性能良好,并且想自己尝试一下。•可以使不懂编程的人在可视化窗口界面下轻松地完成某个特定功能。图形用户界面的设计原则和一般步骤1设计原则由于要求不同,设计出来的界面也千差万别。但是,自从人们开始设计图形界面以后,界面设计的评判标准却没有太大的变化。简单说来,一个好的界面应遵循以下三个原则:简单性(Simplicity)、一致性(Consistency)及习常性(Familiarity)。13(1)简单性设计界面时,应力求简洁、直接、清晰地体现出界面的功能和特征。那些可有可无的功能,应尽量删去,以保持界面的整洁。设计的图形界面要直观,为此应多采用图形,而间量避免数值。设计界面应间量减少窗口数目,力避在不同窗口之间进行来回切换。(2)一致性所谓一致性有两层含义:一是读者自己开发的界面风格要尽量一致;二是新设计的界面要与其他已有的界面的风格不要截然向左。这是因为用户在初次使用新界面时,总习惯于凭借经验进行试探。比如说,图形显示区常安排在界面的左半边,而按键等控制区被排在右侧。(3)习常性设计界面时,应尽量使用人们所熟悉的标志与符号。用户可能并不了解新界面的具体含义及操作方法,但他完全可以根据熟悉标志作出正确猜测,自学入门。(4)其他考虑因素除了以上对界面的静态要求外,还应注意界面的动态性能。如界面对用户操作的响应要迅速(Immediate)、连续(Continous);对持续时间较长的运算,要给出等待时间提示,并允许用户中断运算。142一般制作步骤界面制作包括界面设计和程序实现。具体制作步骤如下:(1)分析界面所要求实现的主要功能,明确设计任务;(2)在稿纸上绘出界面草图,并站在使用者的角度来审查草图;(3)按构思的草图,上机制作静态界面,并检查之;(4)编写界面动态功能的程序,对功能进行逐项检查。基础知识讲到这里,下面来看一下具体实例15二、具体实例(一)统计鼠标的单击次数1、按照前面步骤,打开一个GUI空白界面。2、在空白页放入pushputton和statictext,如下图所示。163、双击pushbutton,进入pushputton属性设置界面174、修改Backgroundcolor为浅蓝色,修改color为黄色,修改fontsize的大小为12,修改string为Click,修改Foregroundcolor为蓝色,修改之后如图所示:5、同样双击staticText,进入其属性修改界面,修改fontsize的大小为12,修改Foregroundcolor为红色,修改后如图:186、保存文件到桌面,文件名为c1;保存确定之后,会进入M-fileEditor界面,如图所示该界面是GUI界面中pushputton和statictext的内在程序,在该M-fileEditor界面特定位置编程,即可把pushputton和statictext两个模块联系在一起,以实现所需功能。197、在M-file编辑器界面,找到函数functionpushbutton1_Callback(hObject,eventdata,handles)在这个函数名称下面写入如下程序段:persistentc%定义局部静态变量,persistent变量在声明时没有赋值,将被初始化为空矩阵ifisempty(c)%如果c矩阵是空矩阵c=0%给c赋初值为0endc=c+1;%c等于c加1str=sprintf('TotalClicks:%d',c);%把TotalClicks:c(c是一个变量)这句话保存到str中set(handles.text1,'String',str);%把str中的内容以字符串的形式显示在text1中如图所示:7、保存程序后,