




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第11章 图形用户界面(gui) 用户界面即用户与硬件、软件交互、通信的中介,通过用户界面,用户向软件发出执行某项功能的指令,该软件利用硬件、其他软件执行该指令,并以图形或文字的形式将执行结果返回给用户。现今,对大多数用户来说人们更青睐于一种所见即所得的用户界面系统,即图形用户界面(graphical user interface,简称gui)。图形用户界面是由窗口、光标、按键、菜单、文字等元素构成的用户视窗,用户通过对这些元素的点击、选中等就能很轻松地完成某项功能,这种所见即所得的特性尤其在图形绘制等方面具有很好的应用。11.1 gui设计方式 图形用户界面程序可以分为两个相对较独立的子模块
2、,即界面模块和工作模块,界面模块接受用户的输入,并将输入数据和操作请求提交给工作模块;而工作模块通常在后台完成数据处理任务,并将结果提交到界面。相应地,gui程序设计可以分为界面设计和程序设计两部分。 本节首先介绍gui的界面元素及界面对象层次结构,这是gui界面设计的基础。11.1.1 gui对象及层次结构 图形用户界面程序的界面部分由各种类型的图形对象组成,如窗口、菜单、按钮等。 matlab的图形对象是matlab用于显示数据的基本元素,每个图形对象都有一个唯一的id,称之为句柄(handle),因此matlab图形对象也称为句柄图形对象。用户可以通过图形句柄查询或设置对象的属性,也可以
3、经由图形句柄改变图形对象的外观。 什么是句柄? 句柄是图形对象的标识代码(唯一的身份),标识代码含有图形对象的各种必要的属性信息。 各图形对象的句柄数据格式: 根屏幕 0 图形窗口 正整数,表示图形窗口序号 其它对象 对应的双精度浮点数11.1.2 句柄(handle)与句柄操作父对象子对象图形对象之间的关系为父代与子代的关系窗口1窗口n窗口2界面控制界面菜单轴线面字块像根屏幕说明:说明:根:图形对象的根,对应于计算机屏幕,根只有一个,其它所有图形对象都是根的后代。图形窗口: 根的子代,窗口的数目不限,所有图形窗口都是根屏幕的子代,除根之外,其它对象则是窗的后代。界面控制:图形窗口的子代,创建
4、用户界面控制对象,使得用户可采用鼠标在图形上作功能选择,并返回句柄。11.1.2 句柄(handle)与句柄操作界面菜单界面菜单: : 图形窗口的子代,创建用户界面菜单对象 轴:图形窗口的子代,创建轴对象,并返回句柄,线面字块像的父辈线:轴的子代,创建线对象面:轴的子代,创建块对象字:轴的子代,创建字对象块:轴的子代,创建块对象像:轴的子代,创建图像对象11.1.2 句柄(handle)与句柄操作01234567-1-0.8-0.6-0.4-0.200.20.40.60.81窗口对象窗口对象线线对对象象轴对象0102001020-10010-505-1-0.500.51x=-pi tp pic
5、os(x)value of the cosinecos(x)=0.7071002003000501001502000-1-0.500.51面对象轴对象块对象线对象文字对象像对象例:创建1号窗口,返回句柄 h=figure(1) h=1 返回值为窗口号数例:h=line(1:6,1:6)创建线对象的同时也建立了一个唯一的句柄 变量h是句柄值符点数应用举例:图形窗口正整数,表示图形窗口序号其它对象对应的双精度浮点数 句柄属性的设置与修改get: 获得句柄图形对象的属性和返回某些 对象的句柄值set: 改变图形对象的属性 专用函数:gcf:当前图形对象的句柄 get current figuregc
6、a:当前轴对象的句柄 get current axesget(gca) 返回当前坐标轴的所有属性值11.1.3 图形对象属性的获得与设置操作格式:h=gcf 将当前窗口对象的句柄返回hget(h)或get(gcf) 查阅当前窗口对象的 属性delete(gcf) 删除当前窗口的属性例:h=line(1:6,1:6)1.get(h) 获得句柄图形对象的属性和返回某些 对象的句柄值2、get(gca,children)轴的子代11.1.3 图形对象属性的获得与设置例:创建一个线对象并返回线对象的句柄值 h1=line(0:10,0:10)h1 = 57.0001h1为句柄的代码值012345678
7、910012345678910应用举例: 查阅线对象的属性名称和属性值get(h1)color = 1 1 0erasemode = normallinestyle = -linewidth = 0.5markersize = 6xdata = (1 by 11) ydata = (1 by 11) zdata = buttondownfcn = children = clipping = oninterruptible = noparent = 56.0001type = lineuserdata = visible = on 查轴的句柄 get(gca) 对象属性的继承操作是通过父代对象,
8、设置省缺对象属性来实现的。 父代句柄属性中设置缺省值后,所有子代对象均可以继承该属性的省缺值。 属性省缺值的描述结构为: default+对象名称+对象属性11.1.4 对象属性的继承操作如:defaultfigurecolor 图形窗口的颜色 defaultlinecolor 线的颜色 省缺值的获得与设置也是由get,set函数实现的例: get(0,defaultfigurecolor) 获得图形 窗口颜色的缺省值 应用举例:应用举例:例:在图上添加文字注释,颜色为红色 应用举例:set(gcf,defaulttextcolor,1 0 0) gtext(正弦) gtext(余弦) %鼠标
9、取点 在轴对象上设置字对象的颜色省缺值为红色 继承该省缺值在图上添加红色的文字注释例:在轴对象上设置线sin(2x)0:2的颜色省缺值为红色x=0:2*pi/180:2*pi;y=sin(2*x);set(gca,defaultlinecolor,1 0 0);h=line(x,y)h = 68.0001set(h,color,default)变成缺省的红色11.3 guide式gui程序 我们希望像在vc、vb中那样,只需通过鼠标把需要的对象拖曳到目的位置,并设置相关的属性就能得到一个设计良好的gui界面,这正是下面将要介绍的guide。为此,下面通过一个简单的例子介绍guide式的gui程
10、序设计方法,其主要目的是了解其设计的主体思路,更详细的内容将在本章后续内容中讨论。11.3.1 guide式gui程序 (1)启动gui 欲启动gui操作,可以在命令窗口中输入guide命令。(2)布局(layout)编辑器 当用户在guide 中打开一个gui时,该gui将显示在 layout编辑器中,layout编辑器是所有guide工具的控制面板。 (2)布局(layout)编辑器 可以使用鼠标拖动模板左边的控件(按钮、坐标轴、单选按钮等)到中间的布局区域 。 (3)guide模板介绍 guide quick start对话框提供了几种常用的gui模板 。(4)运行gui 单击工具栏最右
11、边的绿色按钮,即运行当前的gui窗口。 11.3.2 创建gui对象 gui窗口的布局 改变gui窗口的大小 控件的添加和对齐 gui控件的属性控制 属性查看器的显示 一些常用的属性 菜单的添加 主菜单的创建 弹出式菜单的的创建 11.3.2 gui窗口的布局 改变gui窗口的大小 在布局编辑器中可以很方便地改变gui中网格区域的大小,只需单击网格区域的右下角,当鼠标变为箭头形式时,拖动鼠标,即可适时改变窗口的大小11.3.2 gui控件的属性控制 属性查看器的显示 可以使用如下方式打开: 在布局窗口中双击某个控件。11.3.2 主菜单的创建1 菜单属性的设置 单击右图中的菜单标题untitl
12、ed 1,将在菜单编辑器的右边显示该菜单的属性提供给用户进行编辑,如label、tag、accelerator、separator和checked等属性。 11.4 guide界面环境guide创建的gui程序由两个文件组成: fig文件,即用户界面文件; m文件,保存了gui程序所有的代码,用户所有的编码工作都在该文件中完成。11.4.1 gui界面设计 界面设计在软件设计中具有重要的地位,有时界面的好坏甚至决定了软件的命运,对图形用户界面程序更是如此。 用户界面是人与计算机之间的媒介,用户通过用户界面来与计算机进行信息交换,所以软件的友好性、易用性对于软件系统至关重要。用户界面设计的最高原
13、则应该是用户无须阅读操作手册就知道如何使用软件。11.4.2 窗口和轴 窗口是gui各类界面对象的容器,是任何gui程序界面不可缺少的元素。从对象继承关系看,各类界面对象、轴、菜单都是窗口对象的子类,是一些特殊类型的窗口,表列出了窗口对象常用的属性。窗口常用属性属 性 名说 明name窗口标题position窗口位置,14行向量,单位为像素menubar决定窗口是否包含菜单栏toolbar决定窗口是否包含工具栏uicontextmenu决定窗口是否上下文菜单unit窗口内对象的尺寸单位,一般设为normalizedtag窗口对象标签11.4.3 菜单 对于某些gui程序,菜单栏是必需的。关于菜
14、单栏的设计,guide已经为用户提供了一个标准菜单,用户可以在该标准菜单的基础上通过新增和修改菜单项定义自己菜单。表列出了菜单经常使用的属性。菜单常用属性属 性 名说 明label菜单项标题属性accelerator快捷键tag标签属性callback回调函数checked菜单项状态属性,on/off,on时菜单项前为enable菜单项是否可用,on/off,菜单不可用时为灰色visible是否可见属性,on/off回调函数 gui程序完成初始化之后,其工作流程大致如下:用户通过操作某个界面对象,向gui程序发出任务请求;matlab自动调用该界面对象的回调函数,响应用户请求并以某种形式返回执
15、行结果。 这里有必要澄清一个问题,即回调函数是用户操作触发,但由matlab系统调用;用户不需要也不应当直接调用回调函数,用户只需关注回调函数本身。用户也许会对matlab系统如何启动回调函数心存疑问,实际上回调函数是界面对象的一个属性,matlab系统通过界面对象的句柄查询到回调函数的句柄,从而实现对回调函数的调用。11.4.4 控件 对控件对象,有几类属性是共有的,且含义、用法是相似的: style,所有的控件都由函数uicontrol创建,因此在创建控件时需要传入控件类型参数,如pushbutton、checkbox、edittext等; tag,关于标签属性的含义及其用法。 callb
16、ack,即控件的回调函数。 string,该属性包含了对象的一些文字描述,对按钮、复选框、列表框、编辑框和静态文本框,string是显示在对象上或紧邻对象的文字。 value包含了对象的数值描述,该数值必须在min和max之间,其中min和max分别由min、max属性决定。对复选框,max、min为1和0。当复选框被选中时,value为1,否则为0。对滚动条,value是随滚动条位置变化的数值。11.4.4 控件11.5 gui程序设计 guide创建的gui程序文件由两部分组成,其一是界面文件,保存了gui程序的界面对象及其布局;其二是gui m文件,保存了gui程序所有的代码,相当于gu
17、i程序的引擎,用户所有的编码工作都在该文件中完成,其中主要是各类回调函数的设计。11.5.1 gui m文件结构 gui m文件包含了所有运行gui程序所需的代码,完成gui界面设计之后,guide会自动产生相应的m文件框架。虽然回调函数是用户主要的编程工作,但gui m文件的结构对理解matlab gui程序的本质及进一步的程序设计是非常重要的。 myguidegui.m函数文件除一个主函数之外,还包含6个子函数,可以将这些函数(包括主函数)分为以下四类: gui创建函数,即主函数(myguidegui),用于创建gui界面、gui程序实例等,用户可以在该函数内完成一些必需的初始化工作,如设
18、置程序运行相关的环境变量等。gui创建函数可以返回程序窗口的句柄; 初始化函数(myguidegui_openingfcn),完成程序的初始化工作,如gui界面的初始化等; 输出函数(myguidegui_outputfcn),将程序执行后的状态输出至命令行,或向其他gui程序传递参数; 回调函数(pushbuttonk_callback),用于响应用户操作。11.5.2 设计回调函数回调函数的一般格式如下: function tag_callback(hobject, eventdata, handles) 其中hobject即是界面对象的句柄, eventdata为消息句柄,handles
19、为回调函数的输入参数。11.6 gui应用实例 前面从gui界面设计、程序设计两个方面分别对matlab gui设计进行了详细的介绍,内容相对分散,通过一个完整gui设计实例将前面内容组织起来,通过这个例子,一方面,可以学习gui设计的流程,另一方面也可以加深对前面内容的理解。11.6.1 分析用户需求 设计一个gui程序,该程序具备以下功能:用户随机输入两个频率值和,以及一个时间向量,gui计算时间序列,并对该时间序列作傅立叶分析;分别作该时间序列的时域波形图和频域波形图。 对一些大型复杂程序,设计者往往需要对用户的需求进行分析、转换、拆分,从而得到一组由软件语言描述、相对独立的子任务。本例
20、中的用户需求较简单,可以直接跳至gui界面设计阶段。11.6.2 设计gui界面(1)启动guide;(2)选择gui模板,在guide启动(guide quick start)对话框中选择空白gui模板(blanket gui) (3) 窗口属性设置,在工具栏点击按钮 打开窗口属性浏览器,设置窗口的相关属性。name:myadvancegui; menubar:none; toolbar:none;uicontextmenu: none;unit:normalized;tag:myguiunit窗口内对象的尺寸单位,一般设为normalizedtag窗口对象标签(4)添加轴对象,并设置相关属
21、性。鼠标单击编辑界面左侧控件面板的,然后在界面客户区绘制坐标轴,通过复制的方法绘制第二个坐标轴。(5)轴对象属性设置。将两坐标轴的tag分别设置为“time”和“frequency”,其他属性保持不变。(6)为做标轴添加标题x=sin(2 f1t)+sin(2 f2t)。鼠标单击编辑界面左侧控件面板的静态文本框(static text),设置静态文本框的string为sin(2pif1t)+sin(2pif2t)string,该属性包含了对象的一些文字描述,string是显示在对象上或紧邻对象的文字。(7)添加频率输入编辑框。单击界面左侧控件面板的编辑框按钮(edit text)至客户界面适当的位置,设置编辑框的string属性值为50,tag属性为f1_ed,用同样方法创建第二个编辑框, string属性值为50,tag属性为f2_ed,并通过(6)的方法编写文本提示标题分别为“频率值f1”和“频率值f2”(8)添加时间向量输入编辑框。利用与(6)相思方法创建时间向量编辑框, string属性值为”时间向量t”,时间向量输入编辑框的string设置为0:0.001:0.25,tag属性为t_ed,(9)添加波形分析按钮(push button)。单击编辑界面左侧控件面板并拖至客户界面合适位置,string设置为”波形分析”,tag属性为waveanal
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年国网河南电力招聘高校毕业生笔试真题
- 2024年鞍山海城市招聘医疗岗位笔试真题
- 法律文化在社会中的表现试题及答案
- 网络管理员考试准备清单2025试题及答案
- 企业战略执行案例试题及答案
- 网络管理员培训指南试题及答案
- 网络服务监控与调优试题及答案
- 企业网管案例分析试题及答案
- 材料力学性能测试疲劳韧性重点基础知识点
- 江西省抚州市金溪县2025年八年级数学第二学期期末质量跟踪监视模拟试题含解析
- 2022年湘潭职业技术学院中职部教师招聘笔试题库及答案解析
- 双向转诊制度与流程图
- 2万吨棉杆化机浆项目可行性报告
- 施工现场防汛应急培训记录
- 果蔬干制加工技术课件
- 个人承诺书(建造师)
- 应急预案(危货运输企业)
- 氩气岗位应急处置卡
- 更换破碎机耦合器措施-
- SMT不良品维修作业指导书
- 四年级英语下册Unit11IwasborninJanuary教案教科版(广州三起)
评论
0/150
提交评论