1、第九章 图形界面编程 (Graphical User Interface,GUI)一、常用对话框的设计一、常用对话框的设计二、图形界面设计二、图形界面设计三、可视化图形用户界面设计三、可视化图形用户界面设计一、常用对话框的设计一、常用对话框的设计(1)创建对话框创建对话框dialogh=dialog(PropertyName,ProperValue,.)返回一个对话框句柄。该函数产生一个图形对象返回一个对话框句柄。该函数产生一个图形对象并为对话框设置推荐的图形属性。并为对话框设置推荐的图形属性。Note:该函数的属性是图形该函数的属性是图形Figure的属性的属性Example:h=dialo
2、g(Name,图形对话框图形对话框,Position,.240,240,200,50,Color,r)(2)创建输入对话框创建输入对话框inputdlga)answer=inputdlg(prompt)b)answer=inputdlg(prompt,title)c)answer=inputdlg(prompt,title,lineNo)d)answer=inputdlg(prompt,title,lineNo,defAns)e)answer=inputdlg(prompt,title,lineNo,defAns,Resize)对应描述对应描述:prompt是一个包含是一个包含提示提示字符串的
3、数组。字符串的数组。a)创建一个模式对话框并返回用户在数组中输入的内容创建一个模式对话框并返回用户在数组中输入的内容b)title为对话框指定一个标题为对话框指定一个标题c)lineNo为用户的每个输入值指定输入的行数,可以是标量、为用户的每个输入值指定输入的行数,可以是标量、列向量或矩阵。列向量为一个提示符指定输入的行数;矩阵列向量或矩阵。列向量为一个提示符指定输入的行数;矩阵是是m*2矩阵,其中矩阵,其中m是对话框中提示符的个数,矩阵的第一是对话框中提示符的个数,矩阵的第一列为指定输入的行数;第二列指定字符的域宽。列为指定输入的行数;第二列指定字符的域宽。d)defAns指定每个提示符的默
4、认值指定每个提示符的默认值e)Resize说明对话框是否改变尺寸,取值说明对话框是否改变尺寸,取值on和和off。例ans=inputdlg(请输入题号(1-10),输入0退出,Matlab zuoye)例pp=a=?,b=?ans=inputdlg(pp,Input Param)例例inputdlg(AAAAAAA)inputdlg(AAAAAAA,input dialog)inputdlg(AAAAAAA,input dialog,2)inputdlg(AAAAAAA,input dialog,1,OOOOOOOO)inputdlg(AAAAAAA,input dialog,1,OOOOO
5、OOO,on)Cell array例例 创建输入一个整数和色图名称的对话框,每行只创建输入一个整数和色图名称的对话框,每行只允许输入一行。允许输入一行。prompt=Enter Matrix size,Enter colomap name;title=Input data for peaks function;lines=1;def=20,hsv;answer=inputdlg(prompt,title,lines,def)(3)创建消息对话框创建消息对话框 msgboxa)msgbox(message)b)msgbox(message,title)c)msgbox(message,title
6、,icon)d)msgbox(message,title,custom,iconData,iconCmap)e)msgbox(.,createMode)f)h=msgbox(.)对应描述:对应描述:a)产生一个消息对话框产生一个消息对话框b)title为消息对话框指定标题为消息对话框指定标题c)Icon指定在消息对话框中显示哪一个图标指定在消息对话框中显示哪一个图标.icon可以是可以是none、error、help、warn、customd)定义一个用户定制的图标。定义一个用户定制的图标。iconData包含着定义图标的图形数据;包含着定义图标的图形数据;iconCmap是图形所用的色图是图
7、形所用的色图e)指定消息框是否为模式化的,如果是非模式化的,是否要取代其指定消息框是否为模式化的,如果是非模式化的,是否要取代其它有同样标题的消息框。它有同样标题的消息框。createMode取取modal、non-modal和和replacef)返回一个对话框的句柄返回一个对话框的句柄h,它是一个图形对象的句柄,它是一个图形对象的句柄。Note:消息对话中的消息自动换行来适应具有适当消息对话中的消息自动换行来适应具有适当尺寸的图框。尺寸的图框。Message是一个字符串向量、字符串是一个字符串向量、字符串矩阵或数组。矩阵或数组。例例 mess=Inputdlg help,Listdlg he
8、lp;Msgbox help,.Pagedlg help msgbox(mess,MyDialogHelp,help)mess=Inputdlg help Listdlg help Msgbox help Pagedlg help(4)创建错误对话框创建错误对话框errordlga)errordlgb)errordlg(eerrorstring)c)errordlg(eerrorstring,dlgname)d)errordlg(eerrorstring,dlgname,on)e)h=errordlg(.)相应描述:相应描述:a)显示一个包含字符串显示一个包含字符串”This is the d
9、efault error string”的名的名为为”Error Dialog”的对话框的对话框b)显示一个包含字符串显示一个包含字符串”error string”的名为的名为”Error Dialog”的的对话框对话框;c)显示一个包含字符串显示一个包含字符串”error string”的名的名”dlgname”的对话框的对话框d)指定是否取代一个已经存在的有相同名字的对话框。指定是否取代一个已经存在的有相同名字的对话框。on表示表示把一个有相同名字的出错对话框提在前台;把一个有相同名字的出错对话框提在前台;e)返回一个错误对话框句柄。返回一个错误对话框句柄。Note:MATLAB自动改变对
10、话框的大小来适应自动改变对话框的大小来适应字符串字符串 errorstring 的长度的长度.例例errordlgerrordlg(File not found)errordlg(File not found,File Error)errordlg(File not found,File Error,on)(5)创建问题对话框创建问题对话框questdlgnbutton=questdlg(qstring)打开问题提示对话框,有打开问题提示对话框,有三个按钮,分别为:三个按钮,分别为:yes,no和和cancel,questdlg确定提确定提示信息。示信息。nbutton=questdlg(qs
11、tring,title)title确定对话框标题。确定对话框标题。nbutton=questdlg(qstringtitle,default)当按回车键当按回车键时,返回时,返回default值值,default 必须是必须是yes,no或或cancel 之一。之一。nbutton=questdlg(qstring,title,str1,str2,default)打开问题提示对话框,有两个按钮,分别由打开问题提示对话框,有两个按钮,分别由str1和和str2确定,确定,qstdlg确定提示信息,确定提示信息,default必须是必须是str1或或str2之一。之一。nbutton=questd
12、lg(qstring,title,str1,str2,str3,default)打开问题提示对话框,打开问题提示对话框,有三个按钮,分别由有三个按钮,分别由str1,str2和和str3确定,确定,qstdlg确定提示信息,确定提示信息,default必须是必须是str1,str2或或str3之一。之一。例例 生成一个问询对话框,询问用户是否继续生成一个问询对话框,询问用户是否继续一个假定的操作。一个假定的操作。button=questdlg(Do you want to continue?,Continue Operation,Yes,No,Help,No)if strcmp(button,
13、Yes)disp(Creating file)elseif strcmp(button,No)disp(Canceled file operation)elseif strcmp(button,Help)disp(Sorry,no help)end(6)创建警告对话框创建警告对话框warndlgh=warndlg(warningstring,dlgname)打开警告信息对话框,显示打开警告信息对话框,显示warningstring信息,信息,dlgname确定对话框标题,确定对话框标题,h为返回对话句柄。为返回对话句柄。例例warndlg(Pressing OK will clear Memo
14、ry,.Warning!)(7)显示帮助对话框显示帮助对话框helpdlghelpdlghelpdlg(helpstring)helpdlg(helpstring,dlgname)h=helpdlg(.)Note:MATLAB将将helpstring中的内容自动换行来适应中的内容自动换行来适应一个对话框的长度。一个对话框的长度。例例helpdlghelpdlg(you can select 10 points from figure)helpdlg(you can select 10 points from figure,.points selection)(8)创建选择列表内容的对话框创建选
15、择列表内容的对话框listdlgSelection,ok=listdlg(ListString,S,.)其中,其中,n Selection是已经选择的字符串的索引向量;是已经选择的字符串的索引向量;在只有一个选项的模式下,它的长度为在只有一个选项的模式下,它的长度为1;当点击当点击OK按钮时,按钮时,ok=1;当点击当点击Cancel按钮时,按钮时,ok=0;当当ok=0时时,Selection=;对话框还有一个对话框还有一个Select all按钮。按钮。n 输入参数和其值的形式列表如下:输入参数和其值的形式列表如下:参数参数描述描述 ListString指定列表选框的字符串数组指定列表选框
16、的字符串数组 SelectionMode 值为值为sigle或或multiple ListSize用像素来衡量尺寸,用像素来衡量尺寸,w h,160 30 InitialValue最初被选择的列表框选项的索引向量,默认值最初被选择的列表框选项的索引向量,默认值为为1,即第一项,即第一项 Name对话框标题名称对话框标题名称 PromptString在列表框上部的正文中出现的字符串的数组或在列表框上部的正文中出现的字符串的数组或矩阵。默认值为矩阵。默认值为 OKStringOK按钮上的字符串,默认为按钮上的字符串,默认为OK CancelStringCancel按钮上的字符串,默认为按钮上的字符
17、串,默认为Cancel uh用户界面控制按钮的高度,用用户界面控制按钮的高度,用pixel表示表示,18 fus框架和用户截面控制按钮的间隔,框架和用户截面控制按钮的间隔,pixel,18 ffs框架数字的间隔框架数字的间隔,pixel,8例例 创建用户从当前目录中选一个文件的对话框创建用户从当前目录中选一个文件的对话框。函数将返回一个向量,该向量的第一个元素是函数将返回一个向量,该向量的第一个元素是被选文件的索引,第二个元素在没有做选择时被选文件的索引,第二个元素在没有做选择时为为0,做了选择后为,做了选择后为1。d=dir;str=d.names,v=listdlg(PromptStrin
18、g,Select a file:,.SelectionMode,single,ListString,str)例例 创建一个自己的列表对话框创建一个自己的列表对话框str=AAAAAA,BBBBBBB,CCCCCCC,DDDDDDD;s,v=listdlg(ListString,str,SelectionMode,multiple,.ListSize,200,100,Name,MyListDialog,.PromptString,Please select follow options,ffs,18)MATLAB(9)创建显示页面的版面对话框创建显示页面的版面对话框pagedlga)pagese
19、tupdlgb)pagesetupdlg(fig)对应描述对应描述a)对当前图形显示一个页面的版面对话框,使用户对当前图形显示一个页面的版面对话框,使用户可以进行可以进行页面设置页面设置b)对由对由fig指定的图形显示一个页面设置对话框指定的图形显示一个页面设置对话框例例 figurex=0:pi/100:2*pi;y=sin(x);plot(x,y)pagesetupdlg(10)创建显示打印对话框创建显示打印对话框printdlga)printdlgb)printdlg(fig)c)printdlg(-crossplatform,fig)对应描述对应描述a)打印当前的图形打印当前的图形b)
20、生成一个对话框,由此用户可以打印句柄生成一个对话框,由此用户可以打印句柄fig指指定的图形窗口。但该命令不能打印用户菜单定的图形窗口。但该命令不能打印用户菜单c)对微软的对微软的Windows操作系统显示一种标准的交操作系统显示一种标准的交叉平台式的叉平台式的MATLAB打印对话框。打印对话框。例例t=0:pi/100:2*pi;y=sin(x);plot(x,y)printdlg(11)进程条进程条nh=waitbar(x,title)显示以显示以title为标题的进程条,为标题的进程条,x为进程条的比例长为进程条的比例长度,其值必须在度,其值必须在0到到1之间,之间,h为返回的进程条对象为
21、返回的进程条对象的句柄。的句柄。nwaitbar(x,title,creatcancelbtn,button_callback)在进程条上使用在进程条上使用creatcancelbtn参数创建一个参数创建一个撤销按钮,在进程中按下撤销按钮将调用撤销按钮,在进程中按下撤销按钮将调用button_callback 函数。函数。nwaitbar(.,property_name,property_value,.)选择其它由选择其它由prompt_name定义的参数,参数值由定义的参数,参数值由prompt_value指定。指定。例例clch=waitbar(0,please wait.);pause;
22、%暂停,击任一键继续暂停,击任一键继续 for i=1:1000 waitbar(i/1000,h,MyProcess.)endclose(h)(12)打开文件对话框打开文件对话框uigetfilenuigetfile 显示一个用于检索一个文件的对话框显示一个用于检索一个文件的对话框,列出了当前目列出了当前目前中的文件和目录。前中的文件和目录。nuigetfile(FilterSpec)FilterSpec确定最先显示的文章,它可以用通配符确定最先显示的文章,它可以用通配符*。nuigetfile(FilterSpec,DialogTitle)nuigetfile(FilterSpec,Dia
23、logTitle,x,y)把对话框定位在把对话框定位在x,y,这里,这里x和和y是距左边界和上边是距左边界和上边界的距离,以像素为单位。界的距离,以像素为单位。nfname,pname=uigetfile(.)返回在对话框中选择的文件的名称和路径。返回在对话框中选择的文件的名称和路径。fname 保存被选中的文件的名称,保存被选中的文件的名称,pname保存路径。保存路径。例例 列出选定目录中的所有列出选定目录中的所有.m文件文件fname,pname=uigetfile(C:Documents and Settings yfzxMy Documents MATLAB*.m,Sample Di
24、alog Box)fname=example5_24.mpname=C:Documents and SettingsyfzxMy DocumentsMATLAB(13)保存文件对话框保存文件对话框uiputfilenuiputfile 显示一个中写入文件名的对话框显示一个中写入文件名的对话框,列出了当前目前中的列出了当前目前中的文件和目录。文件和目录。nuiputfile(InitFile)显示的对话框包含当前路径中由显示的对话框包含当前路径中由InitFile确定的文件的确定的文件的列表。列表。InitFile可以是一个文件的全名,也可以包含通可以是一个文件的全名,也可以包含通配符配符*。n
25、uiputfile(InitFile,DialogTitle)nuiputfile(InitFile,DialogTitle,x,y)把对话框定位在把对话框定位在x,y,这里,这里x和和y是距左边界和上边界是距左边界和上边界的距离,以像素为单位。的距离,以像素为单位。nfname,pname=uiputfile(.)返回在对话框中选择的文件的名称和路径。返回在对话框中选择的文件的名称和路径。fname 保保存被选中的文件的名称,存被选中的文件的名称,pname保存路径。保存路径。例例 显示一个标题为显示一个标题为Save File name,文件名为,文件名为aaa.m的对话框。的对话框。fn
26、ame,pname=uiputfile(aaa.m,Save File name)fname=aaa.mpname=C:Documents and Settingsyfzx桌面桌面(14)弹出式菜单函数弹出式菜单函数menu K=MENU(HEADER,ITEM1,ITEM2,.)K=MENU(HEADER,ITEM1,ITEM2,.)例:例:K=menu(K=menu(请选择请选择,plot,mesh,surf),plot,mesh,surf)二、图形界面设计二、图形界面设计是指由窗口、菜单、对话框等各种图形元素组成的是指由窗口、菜单、对话框等各种图形元素组成的用户界面。用户界面。u在在MA
27、TLAB中,基本的图形界面对象包含中,基本的图形界面对象包含3类:类:用户界面控件对象用户界面控件对象(uicontrol)下拉式菜单对象下拉式菜单对象(uimenu)快捷菜单对象快捷菜单对象(uicontextmenu)1 建立用户菜单建立用户菜单 要建立用户菜单可用要建立用户菜单可用uimenu函数,因其调用函数,因其调用方法不同,该函数可以用于建立一级菜单项和方法不同,该函数可以用于建立一级菜单项和子菜单项。子菜单项。建立一级菜单项的函数调用格式为建立一级菜单项的函数调用格式为:一级菜单项句柄一级菜单项句柄=uimenu(图形窗口句柄,属性图形窗口句柄,属性名名1,属性值,属性值1,属性
28、名,属性名2,属性值,属性值2,.)建立子菜单项的函数调用格式为:建立子菜单项的函数调用格式为:子菜单项句柄子菜单项句柄=uimenu(一级菜单项句柄,属性一级菜单项句柄,属性名名1,属性值,属性值1,属性名,属性名2,属性值,属性值2,.)两种调用格式的区别两种调用格式的区别 建立一级菜单项时,要给出图形窗口句柄。否则,建立一级菜单项时,要给出图形窗口句柄。否则,在当前窗口中建立菜单项。如果没有活动窗口,在当前窗口中建立菜单项。如果没有活动窗口,则会自动打开一个图形窗口;则会自动打开一个图形窗口;建立子菜单项时,必须指定一级菜单项对应的句建立子菜单项时,必须指定一级菜单项对应的句柄值。柄值。
29、菜单项的句柄子菜单项Save的句柄子菜单项Save As的句柄例:例:hm=uimenu(gcf,Label,File);hm1=uimenu(hm,Label,Save)hm2=uimenu(hm,Label,Save As)例例 建立用户菜单项建立用户菜单项h=figure(Name,图形界面窗口图形界面窗口,NumberTitle,off,MenuBar,none)hm=uimenu(h,Label,文件文件);hm1=uimenu(hm,Label,保存保存)hm2=uimenu(hm,Label,另存为另存为)hm3=uimenu(hm,Label,退出退出)菜单对象常用属性菜单对象
30、常用属性 菜单对象菜单对象具有具有Children,Parent,Tag,UserData,Visible等公共属性,除公共属性外,还有一些常用等公共属性,除公共属性外,还有一些常用的特殊属性,见下表所示:的特殊属性,见下表所示:%hm3=uimenu(hm,Label,退出退出,callback,close)hm3=uimenu(hm,Label,&Quit,Accelerator,Q,callback,close,Separator,on)快捷键设置快捷键设置属性名属性名属性值及作用属性值及作用Label取值取值字符串字符串,用于定义菜单项的名字用于定义菜单项的名字.可以在字符可以在字符串
31、中加串中加(&)-对应于下划线对应于下划线,可用可用Alt激活激活Accelerator 取值任何字母取值任何字母,用于定义菜单的快捷键用于定义菜单的快捷键Callback取值字符串取值字符串,可以是某个可以是某个M文件的文件名或一组文件的文件名或一组Matlab命令命令.该菜单被选中后该菜单被选中后,自动调用此回调函数自动调用此回调函数.Checked取值取值on或或off,为菜单项定义一个标记为菜单项定义一个标记,指明菜单指明菜单项是否被选中项是否被选中Enable取值取值on或或off,控制菜单项的可选择性控制菜单项的可选择性.不可用时不可用时,该菜单呈现灰色该菜单呈现灰色.Positi
32、on定义一级菜单在菜单栏上的相对位置或子菜单项定义一级菜单在菜单栏上的相对位置或子菜单项在菜单组内的相对位置在菜单组内的相对位置.默认为默认为1-最左端最左端Separator取值为取值为on或或off.可以用分隔线将将各菜单项分开可以用分隔线将将各菜单项分开.例例 建立图形演示系统菜单,菜单条中含有建立图形演示系统菜单,菜单条中含有3个菜单个菜单项:项:Plot、Option和和Quit。Plot中有中有Sine Wave和和Cosine Wave两个子菜单项,两个子菜单项,分别控制在本图形窗口画出正弦和余弦曲线。分别控制在本图形窗口画出正弦和余弦曲线。Option菜单项的内容菜单项的内容.
33、,其中,其中Grid on和和Grid off控制给坐标轴加网格线,控制给坐标轴加网格线,Box on和和Box off控制给坐控制给坐标轴加边框,而且这标轴加边框,而且这4项只有在画有曲线时才是可项只有在画有曲线时才是可选的。选的。Window Color控制图形窗口背景颜色。控制图形窗口背景颜色。Quit控制是否退出系统。控制是否退出系统。分析其步骤分析其步骤:Step1:按要求建立图形窗口按要求建立图形窗口;Step2:按要求建立第一个菜单项按要求建立第一个菜单项;Step3:按要求建立其子菜单项按要求建立其子菜单项;Step4:按要求实现对应菜单项和子菜单项功能按要求实现对应菜单项和子
34、菜单项功能;Step5:对第二个菜单项对第二个菜单项,重复重复step2-step4;Step6:结束结束screen=get(0,ScreenSize);w=screen(3);h=screen(4);h=figure(Position,0.3*h,0.3*h,0.5*w,0.5*h,Name,图形演示系统图形演示系统,NumberTitle,off,MenuBar,none);hplot=uimenu(h,Label,&Plot);hplot1=uimenu(hplot,Label,Sine Wave,callback,mysin);hplot2=uimenu(hplot,Label,Co
35、sin Wave,callback,mycos);hOption=uimenu(h,Label,&Option);hGridon=uimenu(hOption,Label,&Grid on,Callback,Grid on,Enable,on);hGridoff=uimenu(hOption,Label,G&rid off,Callback,Grid off,Enable,on);hBoxon=uimenu(hOption,Label,&Box on,Callback,box on,Enable,on,separator,on);hBoxoff=uimenu(hOption,Label,B&o
36、x off,Callback,box off,Enable,on);hWincolor=uimenu(hOption,Label,&Window Color,separator,on);hRed=uimenu(hWincolor,Label,&Red,Accelerator,r,call,set(h,color,r););hBule=uimenu(hWincolor,Label,&Blue,Accelerator,b,call,set(h,color,b););hYellow=uimenu(hWincolor,Label,&Yellow,call,set(h,color,y););hBule=
37、uimenu(hWincolor,Label,&White,call,set(h,color,w););hquit=uimenu(h,Label,&Quit,call,close(h);%mysin t=-pi:pi/10:pi;plot(t,sin(t)grid on%mycos t=-pi:pi/10:pi;plot(t,cos(t)grid on2 快捷菜单快捷菜单 快捷菜单是用鼠标右键单击某对象时在屏幕上弹快捷菜单是用鼠标右键单击某对象时在屏幕上弹出的菜单。这种菜单出现的位置是不固定的,而出的菜单。这种菜单出现的位置是不固定的,而且总是和某个图形对象相联系。在且总是和某个图形对象相联系
38、。在MATLAB中,中,可以使用可以使用Uicontextmenu函数和图形对象的函数和图形对象的UicontextMenu属性来建立快捷菜单,具体步骤属性来建立快捷菜单,具体步骤为:为:(1)利用利用uicontextmenu函数建立快捷菜单。函数建立快捷菜单。(2)利用利用uimenu函数为快捷菜单建立菜单项。函数为快捷菜单建立菜单项。(3)利用利用set函数将该快捷菜单和某图形对象联系函数将该快捷菜单和某图形对象联系起来。起来。例例 绘制曲线绘制曲线y=2sin(5x)sinx,并建立一个与之相联,并建立一个与之相联系的快捷菜单,用以控制曲线的线型、曲线宽度和系的快捷菜单,用以控制曲线的
39、线型、曲线宽度和颜色。颜色。x=0:pi/100:2*pi;y=2*sin(5*x).*sin(x);h=plot(x,y);hc=uicontextmenu;hls=uimenu(hc,Label,线型线型);hlw=uimenu(hc,Label,线宽线宽);hlc=uimenu(hc,Label,线色线色);uimenu(hls,Label,虚线虚线,call,set(h,LineStyle,:););uimenu(hls,Label,实线实线,call,set(h,LineStyle,-););uimenu(hlw,Label,加宽加宽,call,set(h,LineWidth,2);
40、);uimenu(hlw,Label,变细变细,call,set(h,LineWidth,0.5););uimenu(hlc,Label,红色红色,call,set(h,Color,r););uimenu(hlc,Label,绿色绿色,call,set(h,Color,g););uimenu(hlc,Label,黄色黄色,call,set(h,Color,y););set(h,UicontextMenu,hc);建立快捷菜单建立快捷菜单建立菜单项建立菜单项建立子菜单项建立子菜单项并实现功能并实现功能将快捷菜单和曲线关联将快捷菜单和曲线关联3 对话框设计对话框设计 对话框是人机交互信息的临时窗口
41、对话框是人机交互信息的临时窗口,有广泛的用途。有广泛的用途。目的是使得用户操作更加方便灵活。目的是使得用户操作更加方便灵活。对话框的控件对话框的控件 设计对话框时,有很多控件,能实现各种各样设计对话框时,有很多控件,能实现各种各样的功能。常用的控件有的功能。常用的控件有控件名控件名 Property Name 功能功能按钮按钮 PushButton最常用的控件,用于响应用户的鼠标单最常用的控件,用于响应用户的鼠标单击,按钮上有说明文字说明其作用。击,按钮上有说明文字说明其作用。切换按钮切换按钮 ToggleButton 当单击时会凹凸状态切换。当单击时会凹凸状态切换。单选按钮单选按钮 Radi
42、oButton当单击时会用黑白点切换,总是成组出当单击时会用黑白点切换,总是成组出现,多个单选按钮互斥,一组中只有现,多个单选按钮互斥,一组中只有一个被选中。一个被选中。复选框复选框CheckBox当单击时会用当单击时会用切换,有选中、不选中切换,有选中、不选中和不确定等状态,总是成组出现,多和不确定等状态,总是成组出现,多个复选框可同时选用。个复选框可同时选用。控件名控件名PropertyName功能功能文本框文本框EditText凹形方框,可随意输入和编辑单行和多行凹形方框,可随意输入和编辑单行和多行文字,并显示出来。文字,并显示出来。静态文本框静态文本框StaticText用于显示文字信
43、息,但不接受输入。用于显示文字信息,但不接受输入。滚动条滚动条Slider可以用图示的方式显示在一个范围内数值可以用图示的方式显示在一个范围内数值的大概值范围,用户可以移动滚动条改的大概值范围,用户可以移动滚动条改变数值。变数值。边框边框Frame将一组控件围在框架中,用于装饰界面。将一组控件围在框架中,用于装饰界面。列表框列表框ListBox显示下拉文字列表,用户可以从列表中选显示下拉文字列表,用户可以从列表中选择一项和多项。择一项和多项。弹出框弹出框PopupMenu相当于文本框和列表框的组合,用户可以相当于文本框和列表框的组合,用户可以从下拉列表中选择。从下拉列表中选择。对话框的设计对话
44、框的设计 在在MATLAB中,要设计一个对话框,首先要建中,要设计一个对话框,首先要建立一个图形窗口,然后在图形窗口中放置所涉及立一个图形窗口,然后在图形窗口中放置所涉及到的用户控件对象。到的用户控件对象。(1)建立控件对象命令建立控件对象命令uicontrolh_control=uicontrol(h_Parent,PropertyName,ProperValue,.)(2)控件对象的属性控件对象的属性 对话框控件对象除了对话框控件对象除了Children、Parent、Visible、UserData等公共属性外,还有一些常用的特殊属等公共属性外,还有一些常用的特殊属性。性。属性名属性名属
45、性值属性值Positionx,y,w,h,它们的单位,它们的单位Units属性决定属性决定Unitspixel、normalized、inches、centiments、pointsCallback取值为字符串,实现该控件的实质性功能取值为字符串,实现该控件的实质性功能String取值为字符串,定义控件对象的说明文字取值为字符串,定义控件对象的说明文字Style取值可以是取值可以是push、toggle、radio、check、list、popup、edit、text、slider等。定义控件对象的等。定义控件对象的类型。类型。Enable该控件的使能状态该控件的使能状态on或或offTool
46、tipstring 鼠标指针位于该控件时的提示信息显示鼠标指针位于该控件时的提示信息显示FontName取值是控件对象标题等使用字体的字库名取值是控件对象标题等使用字体的字库名FontSize字号大小字号大小FontAngle 取值为取值为normalized、italic、obliqueFontUnitsPoints、normalized、inches、centiments、Pixel、FontWeight normalized、light、demi、boldHorizontal-AlignmentLeft、center、right.决定控件对象上说明文字决定控件对象上说明文字在水平方向上对
47、齐方式在水平方向上对齐方式Max和和Min取值为数值取值为数值,默认值为默认值为1、0Value属性的取值属性的取值,可以是向量也可以是数值。可以是向量也可以是数值。说明:对于不同的控件对象说明:对于不同的控件对象(radio,check,slider,list popup),其,其Max、Min以及以及Value值的含义有所不同。值的含义有所不同。例:例:h_main=figure(name,a demo of gui design,menubar,none,.numbertitle,off,position,100 100 300 100);h_edit=uicontrol(style,e
48、dit,backgroundcolor,1 1 1,position,20 20 50 20,.tag,myedit,string,1,horizontalalignment,left);h_but1=uicontrol(style,pushbutton,position,20 50 50 20,string,INC,.callback,v=eval(get(h_edit,string);,.set(h_edit,string,int2str(v+1););h_but2=uicontrol(style,pushbutton,position,80 50 50 20,string,DEC,.ca
49、llback,v=eval(get(h_edit,string);,set(h_edit,string,int2str(v-1););例例2function gui_demo()%GUI_demo is another demo of GUI design.h_main=figure(units,normalized,position,0.3 0.3 0.5 0.4,.name,GUI demostration,numbertitle,off);h_axis=axes(units,normalized,position,0.3 0.15 0.6 0.7,.tag,axplot,xlim,0 1
50、0,ylim,-1 1);t=0:0.1:10;y=sin(t);line(t,y);bmp1=imread(1.bmp);bmp2=imread(2.bmp);bmp3=imread(3.bmp);bmp4=imread(4.bmp);h_1=uicontrol(style,pushbutton,units,normalized,.position,0.1 0.6 0.06 0.1,cdata,bmp1,.callback,zoom on,tooltipstring,Enable zooming);h_2=uicontrol(style,pushbutton,units,normalized