您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第21章创建图形用户界面
第21章创建图形用户界面用户界面是人,即用户与计算机或计算机程序的接触点或交互方式,是用户与计算机进行信息交流的方式。计算机在屏幕显示图形和文本,若有扬声器还可产生声音。用户通过输入设备,如:键盘、鼠标、跟踪球、绘制板或麦克风,与计算机通讯。用户界面设定了如何观看和如何感知计算机、操作系统或应用程序。通常,多是根据悦目的结构和用户界面功能的有效性来选择计算机或程序。图形用户界面或GUI是包含图形对象,如:窗口、图标、菜单和文本的用户界面。以某种方式选择或激活这些对象,通常引起动作或发生变化。最常见的激活方法是用鼠标或其它点击设备去控制屏幕上的鼠标指针的运动。按下鼠标按钮,标志着对象的选择或其它动作。与上一章讨论MATLAB句柄图形功能的相同方式,它让用户按规定设计MATLAB显示信息的方法,本章所描述的图形用户界面的功能,它让用户定制用户与MATLAB的交互方式。命令窗口不是唯一与MATLAB的交互方式。本章将说明图形句柄uicontrol和uimenu对象的使用,把图形界面加到MATLAB的函数和M文件。uimenu对象能在图形窗口中产生下拉式菜单和子菜单。uicontrol对象能建立如按钮,滚动条,弹出式菜单以及文本框等对象。MATLAB在demo命令中包含了GUI功能的极好例子。demo研究该命令,以了解uimenu和uicontrol如何给MATLAB函数提供交互输入。21.1谁创建图形界面GUI?为什么?在运行了demo例子后,很可能会问“为什么要在MATLAB中建立一个GUI?”这是一个很好的问题,简单的回答是可能并不需要.使用MATLAB来分析数据,求解问题,绘制结果的绝大多数的人,并不会发现GUI工具很有用。但另一方面,GUI可以在MATLAB中生成非常有效的工具和应用程序,或是建立演示工作的交互式界面。生成用户图形界面的最常见的理由:编写一个需多次反复使用的实用函数,菜单、按钮、文本框作为输入方法具有意义;或编写函数或开发应用程序供别人使用;或创建一个过程、技术或分析方法的交互式示例;或认为GUI的简洁,性能良好,并且想实践一下。许多基于GUI的工具函数包含在精通MATLAB工具箱中,将在后续章节进行讨论。其它由MATLAB用户编制的工具和实用程序装入MATLAB的GUI函数。工具的大多数可在Mathworks匿名FTP节点和其它资源中获得。在我们开始讨论之前,记住对“句柄图形”的理解是设计和实现GUI的先决条件,如果你跳过了前一章,现在应重新回去阅读。21.2GUI对象层次结构正如我们在上一章所展示的那样,由图形命令生成的每一事物是一个图形对象。图形对象不仅包括uimenu和uicontrol对象,而且还包括图形、坐标轴和他们的子对象。让我们从另一个角度来看这一层次结构。计算机的屏幕本身是根结点,图形是根对象的子对象,坐标轴,uimenu,uicontrol是图形的子对象。根可以包括多个图形,每个图形含有一组或多组坐标轴以及其子对象,每个图形也可以有一个或多个与坐标轴无关的uimenu和uicontrol。虽然uicontrol对象无子对象结点,但他们确实具有多种类型。uimenu对象常将其它的uimenu对象作为其子对象。根计算机屏幕图图UimenuUicontrol型式:按钮键无线按钮键检查框滑标弹出式菜单框架文本编辑uimenuuimenu座标轴父子兄弟图21.1GUI对象层次结构图运行MATLAB的不同型号的计算机或平台上,产生不同的图形显示。Unix工作站使用不同的XWindow系统,具有几个窗口程序,如mwn或twm以控制显示的布局。PC机靠MicrosoftWindows或WindowsNT进行窗口管理,Macintosh计算机用Macintosh工具箱程序作窗口。虽然在各种平台上,显示看起来有很大的不同,但在很多的情况下,句柄图形的编码是一致的。MATLAB在内部处理平台和窗口系统的差别。体现句柄图形例程的函数,包括应用uimenu和uicontrol对象的函数,通常运行在所有平台。存在已知差异的地方将在本章后面给出。21.3菜单在每一个窗口系统中使用菜单让用户选择命令和选项。通常在显示屏或窗口的顶部有一菜单条。移动鼠标指针到菜单标志上按下鼠标按键,顶层菜单就被选中,一列菜单项就从菜单标志拉下来。这种款式菜单就叫下拉式菜单。按下鼠标将指针移动至菜单项并松开鼠标,则完成菜单项的选择。MS-Windows和一些XWindow系统平台还提供另一种选择菜单的方法。在顶层菜单上按下并松开鼠标,或称单击鼠标,则打开下拉菜单。然后,移动鼠标指针至下拉菜单项再次单击鼠标,就选择菜单项。在下拉菜单中选择一项就引起动作的发生。一个菜单项还可用自己的菜单项列表而作为子菜单。子菜单项在子菜单的标志右边显示小三角或箭头以表示菜单还有更多子菜单项可供选择。如果子菜单的菜单项被选择,另一个具有更多菜单项的菜单显示在此菜单的右边的下拉菜单中。有时这种菜单称之行走菜单。选中其中一个菜单项也引起某些动作的产生。子菜单可以嵌套,但层次的数目受到窗口系统及有用资源的限制。菜单的布置Macintosh在显示屏的顶部使用包含下拉菜单标题的菜单条。选择图形窗口时,菜单条变化以反映激活的图形窗中可利用的选项。标准的Macintosh菜单标题包括Apple、File、Edit、Window和Help或BalloonHelp。由uimenu所加的菜单标题放在Window和Help之间。如果想从菜单条中删去File、Edit、和Window菜单标题,可以使用Set命令。set(Hf_fig1,‘Menubar‘,‘none‘)Apple和Help不可从菜单条中删除。同样,标准的菜单是用以下的命令恢复:set(Hf_fig1,‘Menubar‘,‘figure‘)在Microsoft窗口系统下,菜单条位于图形窗口的顶部。每个图形窗口有自己的菜单条,它包含File,Edit,Window和Help标题。由uimenu所加的菜单标题放在Help之后。可以使用与上面相同的Set命令从菜单条中删去或恢复所有的标准菜单。在XWindow系统工作站上没有MATLAB标准图形窗口菜单的标题。窗口管理器可将菜单条放置在屏幕上每一个窗口上端,但这些菜单条与MATLAB菜单无关。当建立第一个uimenu对象时,MATLAB在图形窗口的顶部边缘生成自己的菜单条。建立菜单和子菜单我们采用函数uimenu建立菜单项。uimenu的句法与其他对象创建函数相似。如,Hm_1=uimenu(Hx_parent,‘PropertyName‘,PropertyValue,...)其中Hm_1是由uimenu生成的菜单项的句柄,通过设定uimenu对象的属性值‘PropertyName',PropertyValue这对命令定义了菜单特性;Hx_parent是缺省的父辈对象的句柄,必须是图形和uimenu对象。uimenu对象中最重要的属性是'Label'和'Callback'。'Label'属性值是菜单条和下拉菜单项上的文本字符串,以确认菜单项。'Callback'属性值是MATLAB字符串,当选中菜单项时,它传给eval,用以执行。菜单举例下面的例子用函数uimenu将简单菜单加到当前的图形窗口中。这里提出的例子说明如何只用几个MATLAB命令来建立工作菜单。后面的例子将详细地讨论uimenu的命令和属性。下例用两个下拉菜单将菜单条加到当前窗口中。首先,建立名为Example的顶部菜单输入。Hm_ex=uimenu(gcf,‘Label‘,‘Example‘);在此菜单下有两个菜单项。第一项标志为Grid,切换坐标轴格栅的状态。Hm_exgrid=uimenu(Hm_ex,‘Label‘,‘Grid‘,‘Callback‘,‘Grid‘);注意,句柄Hm_ex是用于与上层菜单相关联的。这项uimenu按eval的要求出现在上层菜单之下。还需注意的是属性‘Callback‘的值,它是一个带引号的字符串。Example下的第二项标志为View,并带有子菜单。Hm_exview=uimenu(Hm_ex,‘Label‘,‘View‘);View菜单有两项选择2-D和3-D视图。Hm_ex2d=uimenu(Hm_exview,‘Label‘,‘2-D‘,‘Callback‘,‘view(2)‘);Hm_ex3d=uimenu(Hm_exview,‘Label‘,‘3-D‘,‘Callback‘,‘View(3)‘);注意以上这些是View的子菜单,因为它们指定Hm_exview作为其父对象。现在,将第二个顶层菜单加到标题为Close的菜单条中。Hm_ex=uimenu(gcf,‘Label‘,‘Close‘);由该顶层菜单Close加入了两个菜单项。第一项关闭图形窗口,第二项使图形窗口打开,但去掉用户菜单。Hm_clfig=uimenu(Hm_close,‘Label‘,‘CloseFigure‘,‘Callback‘,‘Close‘);Hm_clmenu=uimenu(Hm_close,‘Label‘,‘RemoveMenu‘,...‘Callback‘,‘delete(Hm_ex);delete(Hm_ex);drawnow‘);在精通MATLAB工具箱的脚本文件mmenu1.m中含有上面的例子。所以你可以运行mmenu1.m来验证上例。菜单属性如上所示,同句柄图形函数一样,在建立图形对象时可定义uimenu属性,或用set改变属性。所有可设定的属性,包括标题、菜单颜色、甚至回调字符串都可以用set来改变。这种功能十分便于迅速地定制菜单和属性。表21.1列出了MATLAB4.2版本中的uimenu对象的属性及其属性值。带有*的属性是非文件式的,使用时需加小心。在括号{}内的属性值是缺省值。表21.1Uimenu对象的属性Accelerator指定菜单项等价的按键或快捷键。对于X-windows,按键顺序是Control-字符;Macintosh系统,按键顺序是Command-字符或#-字符BackgroundColoruimenu背景色,是一个3元素的RGB向量或MATLAB预先定义的颜色名称。缺省的背景色是亮灰色CallbackMATLAB回调字符串,选择菜单项时,回调串传给函数eval;初始值为空矩阵Checkedon:{off}:被选项的校验标记校验标记出现在所选项的旁边校验标记不显示Enable{on}:off:菜单使能状态菜单项使能。选择菜单项能将Callback字符串传给eval菜单项不使能,菜单标志变灰。选择菜单项不起任何作用。ForegroundColoruimenu前景(文本)色,是一个三元素的RGB向量或MATLAB预先定义的颜色名称。缺省的前景色是黑色Label含有菜单项标志的文本串。在PC系统中,标记中前面有‘&‘,定义了快捷键,它由Alt-字符激活Positionuimenu对象的相对位置。顶层菜单从左到右编号,子菜单从上至下编号Separatoron:{off}:分割符-线模式分割线在菜单项之上不画分割线*Visible{on}:off:uimenu对象的可视性uimenu对象在屏幕上可见uimenu对象不可见ButtonDownFcn当对象被选择时,MATLAB的回调串传给函数eval。初始值为空矩阵。Children其它uimenu对象的句柄。Clipping{on}:off:限幅模式对uimenu对象无效果对uimenu对象无效果DestroyFcn仅用于Macintosh4.2版本。没有文本说明。Interrruptible{no}:yes:指明ButtonDownFcn和CallBack串可否中断回调不可中断回调串可中断Parent父对象的句柄;如果uimenu对象是顶层菜单,则为图形对象;若uimenu是子菜单,则为父的uimenu对象句柄*Select值为[on|off
本文标题:第21章创建图形用户界面
链接地址:https://www.777doc.com/doc-2246033 .html