第11章 MATLAB图形用户界面设计11.1 菜单设计11.2 对话框设计11.3 图形用户界面设计工具,用户界面(或接口)是指:人与机器(或程序)之间交互作用的工具和方法如键盘、鼠标、跟踪球、话筒都可成为与计算机交换信息的接口 图形用户界面(Graphical User Interfaces ,GUI)则是由窗口、光标、按键、菜单、文字说明等对象(Objects)构成的一个用户界面用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等假如使用者所从事的数据分析、解方程、计算结果可视工作比较单一,那么一般不会考虑GUI的制作但是如果读者想向别人提供应用程序,想进行某种技术、方法的演示,想制作一个供反复使用且操作简单的专用工具,那么图形用户界面也许是最好的选择之一 MATLAB为表现其基本功能而设计的演示程序demo 是使用图形界面的最好范例MATLAB的用户,在指令窗中运行demo 打开那图形界面后,只要用鼠标进行选择和点击,就可浏览那丰富多彩的内容 即便比较熟悉MATLAB的使用者,在他初次编写GUI程序时,也会感到棘手。
在此提醒使用者,假如要比较准确的理解本章程序和掌握本章内容,请先阅读第10章关于图柄的内容11.1 菜单设计11.1.1 建立用户菜单要建立用户菜单可用uimenu函数,因其调用方法不同,该函数可以用于建立一级菜单项和子菜单项 建立一级菜单项的函数调用格式为: 一级菜单项句柄=uimenu(图形窗口句柄,属性名1,属性值1,属性名2,属性值2,) 建立子菜单项的函数调用格式为: 子菜单项句柄=uimenu(一级菜单项句柄,属性名1,属性值1,属性名2,属性值2,),图形窗的标准菜单 (1)获得缺省设置的标准菜单 figure (2)隐去标准菜单的两种方法 set(H_fig , MenuBar,none); set(gcf,menubar,menubar); (3)恢复图形窗上标准菜单 set(gcf,menubar,figure);,11.1.2 菜单对象常用属性 菜单对象具有Children、Parent、Tag、Type、UserData、Visible等公共属性,除公共属性外,还有一些常用的特殊属性 例11-1 自制一个带下拉菜单表的用户菜单该菜单能使图形窗背景颜色设置为兰色或红色。
figure %创建一个图形窗口 h_menu=uimenu(gcf,label,Color); %制作用户顶层菜单项Color h_submenu1=uimenu(h_menu,label,Blue,... %制作下拉菜单项Blue callback,set(gcf,Color,blue)); % h_submenu2=uimenu(h_menu,label,Red,... %制作下拉菜单Red callback,set(gcf,Color,red)); %,11.1.3 快捷菜单快捷菜单是用鼠标右键单击某对象时在屏幕上弹出的菜单这种菜单出现的位置是不固定的,而且总是和某个图形对象相联系在MATLAB中,可以使用uicontextmenu函数和图形对象的UIContextMenu属性来建立快捷菜单,具体步骤为:(1) 利用uicontextmenu函数建立快捷菜单2) 利用uimenu函数为快捷菜单建立菜单项3) 利用set函数将该快捷菜单和某图形对象联系起来例11-2 绘制一条Sa曲线,创建一个与之相联系的现场菜单,用以控制Sa曲线的颜色 t=(-3*pi:pi/50:3*pi)+eps; y=sin(t)./t; hline=plot(t,y); cm=uicontextmenu; uimenu(cm,label,Red,callback,set(hline,color,r),) uimenu(cm,label,Blue,callback,set(hline,color,b),) uimenu(cm,label,Green,callback,set(hline,color,g),) set(hline,uicontextmenu,cm),11.2 对话框设计11.2.1 对话框的控件在对话框上有各种各样的控件,利用这些控件可以实现有关控制。
下面先介绍这些控件 (1) 按钮(Push Button) (2) 双位按钮(Toggle Button) (3) 单选按钮(Radio Button) (4) 复选框(Check Box) (5) 列表框(List Box) (6) 弹出框(Popup Menu) (7) 编辑框(Edit Box) (8) 滑动条(Slider) (9) 静态文本(Static Text) (10) 边框(Frame)11.2.2 对话框的设计1建立控件对象 MATLAB提供了用于建立控件对象的函数uicontrol,其调用格式为: 对象句柄=uicontrol(图形窗口句柄,属性名1,属性值1,属性名2,属性值2,)其中各个属性名及可取的值和前面介绍的uimenu函数相似,但也不尽相同,下面将介绍一些常用的属性2控件对象的属性 MATLAB的10种控件对象使用相同的属性类型,但是这些属性对于不同类型的控件对象,其含义不尽相同除Children、Parent、Tag、Type、UserData、Visible等公共属性外,还有一些常用的特殊属性例11-3 创建一个界面包含4种控件:静态文本、“无线电”选择开关、双位按键、控件区域框。
clf reset set(gcf,menubar,none) set(gcf,unit,normalized,position,0.2,0.2,0.64,0.32); set(gcf,defaultuicontrolunits,normalized) %设置用户缺省控件单位属性值 h_axes=axes(position,0.05,0.2,0.6,0.6); t=0:pi/50:2*pi;y=sin(t);plot(t,y); set(h_axes,xlim,0,2*pi); set(gcf,defaultuicontrolhorizontal,left); htitle=title(正弦曲线); set(gcf,defaultuicontrolfontsize,12); %设置用户缺省控件字体属性值 uicontrol(style,frame,... %创建用户控件区 position,0.67,0.55,0.25,0.25); uicontrol(style,text,... %创建静态文本框 string,正斜体图名:,... position,0.68,0.77,0.18,0.1,... horizontal,left);,hr1=uicontrol(gcf,style,radio,... %创建“无线电”选择按键 string,正体,... %按键功能的文字标识正体 position,0.7,0.69,0.15,0.08); %按键位置 set(hr1,value,get(hr1,Max));%因图名缺省使用正体,所以小圆圈应被点黑 set(hr1,callback,... % set(hr1,value,get(hr1,max)),,... %选中将小圆圈点黑 set(hr2,value,get(hr2,min)),,... %将“互斥”选项点白 set(htitle,fontangle,normal),,... %使图名字体正体显示 ); hr2=uicontrol(gcf,style,radio,... %创建“无线电”选择按键 string,斜体,... %按键功能的文字标识斜体 position,0.7,0.58,0.15,0.08,... %按键位置 callback,... set(hr1,value,get(hr1,min)),,... % set(hr2,value,get(hr2,max)),,... % set(htitle,fontangle,italic),... %使图名字体斜体显示 ); % ht=uicontrol(gcf,style,toggle,... %制作双位按键 string,Grid,... position,0.67,0.40,0.15,0.12,... callback,grid);,11.3 图形用户界面设计工具MATLAB的用户界面设计工具共有6个,它们是:(1) 图形用户界面设计窗口:在窗口内创建、安排各种图形对象。
2) 菜单编辑器(Menu Editor):创建、设计、修改下拉式菜单和快捷菜单3) 对象属性查看器(Property Inspector):可查看每个对象的属性值,也可修改设置对象的属性值4) 位置调整工具(Alignment Tool):可利用该工具左右、上下对多个对象的位置进行调整5) 对象浏览器(Object Browser):可观察当前设计阶段的各个句柄图形对象6) Tab顺序编辑器(Tab Order Editor):通过该工具,设置当用户按下键盘上的Tab键时,对象被选中的先后顺序11.3.1 图形用户界面设计窗口1GUI设计模板 在MATLAB主窗口中,选择File菜单中的New菜单项,再选择其中的GUI命令,就会显示图形用户界面的设计模板 MATLAB为GUI设计一共准备了4种模板,分别是Blank GUI(默认) 、GUI with Uicontrols(带控件对象的GUI模板) 、GUI with Axes and Menu(带坐标轴与菜单的GUI模板)与Modal Question Dialog(带模式问话对话框的GUI模板) 当用户选择不同的模板时,在GUI设计模板界面的右边就会显示出与该模板对应的GUI图形。
2GUI设计窗口 在GUI设计模板中选中一个模板,然后单击OK按钮,就会显示GUI设计窗口选择不同的GUI设计模式时,在GUI设计窗口中显示的结果是不一样的 GUI设计窗口由菜单栏、工具栏、控件工具栏以及图形对象设计区等部分组成GUI设计窗口的菜单栏有File、Edit、View、Layout、Tools和Help 6个菜单项,使用其中的命令可以完成图形用户界面的设计操作3GUI设计窗口的基本操作 在GUI设计窗口创建图形对象后,通过双击该对象,就会显示该对象的属性编辑器例如,创建一个Push Button对象,并设计该对象的属性值11.3.2 对象属性查看器 利用对象属性查看器,可以查看每个对象的属性值,也可以修改、设置对象的属性值,从GUI设计窗口工具栏上选择Property Inspector命令按钮,或者选择View菜单下的Property Inspector子菜单,就可以打开对象属性查看器另外,在MATLAB命令窗口的命令行上输入inspect,也可以看到对象属性查看器在选中某个对象后,可以通过对象属性查看器,查看该对象的属性值,也可以方便地修改对象属性的属性值11.3.3 菜单编辑器 利用菜单编辑器,可以创建、设置、修改下拉式菜单和快捷菜单。
从GUI设计窗口的工具栏上选择Menu Editor命令按钮,或者选择Tools菜单下的Menu Editor子菜单,就可以打开菜单编辑器 菜单编辑器左上角的第一个按钮用于创建一级菜单项第二个按钮用于创建一级菜单的子菜单 菜单编辑器的左下角有两个按钮,选择第一个按钮,可以创建下拉式菜单选择第二个按钮,可以创建Context Menu菜单选择它后,菜单编辑器左上角的第三个按钮就会变成可用,单击它就可以创建Context Menu主菜单在选中已经创建的Context Menu主菜单后,可以单击第二个按钮创建选中的Context Menu主菜单的子菜单与下拉式菜单一样,选中创建的某个Context Menu菜单,菜单编辑器的右边就会显示该菜单的有关属性,可以在这里设置、修改菜单的属性 菜单编辑器左上角的第四个与第五个按钮用于对选中的菜单进行左移与右移,第六与第七个按钮用于对选中的菜单进行上移与下移,最右边的按钮用于删除选中的菜单11.3.4 位置调整工具 利用位置调整工具,可以对GUI对象设计区内的多个对象的位置进行调整从GUI设计窗口的工具栏上选择Align Objects命令按钮,或者选择Tools菜单下的Align Objects菜单项,就可以打开对象位置调整器。
对象位置调整器中的第一栏是垂直方向的位置调整对象位置调整器中的第二栏是水平方向的位置调整在选中多个对象后,可以方便的通过对象位置调整器调整对象间的对齐方式和距离11.3.5 对象浏览器 利用对象浏览器,可以查看当前设计阶段的各个句柄图形对象从GUI设计窗口的工具栏上选择Object Browser命令按钮,或者选择View菜单下的Object Browser子菜单,就可以打开对象浏览器 例如,在对象设计区内创建了3个对象,它们分别是Edit Text、Push Button、ListBox对象,此时单击Object Browser按钮,可以看到对象浏览器 在对象浏览器中,可以看到已经创建的3个对象以及图形窗口对象figure用鼠标双击图中的任何一个对象,可以进入对象的属性查看器界面11.3.6 Tab顺序编辑器 利用Tab顺序编辑器(Tab Order Editor),可以设置用户按键盘上的Tab键时,对象被选中的先后顺序选择Tools菜单下的Tab Order Editor菜单项,就可以打开Tab顺序编辑器例如,若在GUI设计窗口中创建了3个对象,与它们相对应的Tab顺序编辑器。
例11-5 利用GUI设计工具设计图11-23所示的用户界面该界面包括一个用于显示图形的轴对象,显示的图形包括表面图、网格图或等高线图绘制图形的功能通过3个命令按钮来实现,用户通过单击相应的按钮,即可绘制相应图形绘制图形所需要的数据通过一个弹出框来选取在弹出框中包括3个选项,分别对应MATLAB的数据函数peaks、membrane和用户自定义的绘图数据sinc,用户可以通过选择相应的选项来载入相应的绘图数据在图形窗口缺省的菜单条上添加一个菜单项Select,Select下又有两个子菜单项Yellow和Red,选中Yellow项时,图形窗口将变成黄色,选中Red项时,图形窗口将变成红色。