实验八 图形用户界面设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验八图形用户界面(GUI)设计

(说明:本次实验在4学时内独立完成)

一、实验目的

1. 熟悉各种控件和界面菜单的制作。

2. 学会编写控件对象的回调程序(callback函数)。

3. 熟练使用GUI开发工具GUIDE设计用户界面。

二、实验预备知识

图形用户界面(Graphical User Interface,简称GUI) 是指由窗口、光标、按键、菜单、文字说明等对象构成的一个人与计算机的交互界面。用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。GUI 的最重要组成是用户菜单(uimenu)和用户控件(uicontrol)。关于界面菜单,可以参考课件相关部分的介绍,这里主要介绍控件的类型、属性和制作方法。

1.用户控件的类型

控件是事件响应的图形对象。当某一事件发生时,应用程序会做出响应并执行某些预定的功能子程序(即回调函数Callback)。MATLAB中有10种不同类型的控件(下图):

①单功能按钮(Push Button);②单选按钮(Radio Button);③双位按钮(Toggle Button);

④复选框(Check Box);⑤列表框(List Box);⑥弹出框(Popup Menu);⑦静态文本框

(Static Text);⑧可编辑文本框(Edit Text);⑨滑标或滚动条(Slider);⑩框架(Frame)。这些控件大致可分为两种,一种为动作控件,鼠标点击这些控件时会产生

相应的响应;一种为静态控件,是不产生响应的控件,如静态文本框等。

表1给出了各种控件的描述。

2.用户控件的属性

每种控件都有一些可以设置的属性参数,用于表现控件的外形、功能

及效果。属性由两部分组成:属性名和属性值,它们必须是成对出现的。

用户可以在创建控件对象时,设定其属性值,未指定时将使用系统缺省值。

下面介绍部分较常用的控件属性:

●Tag取值为字符串,定义了控件的标识(标签),在任何程序中都可

以通过这个标识控制该控件对象。

●Style表明控件对象的类型,取值为表1所列10种当中之一。

●String定义控件对象的标题或选项内容(即控件上用户想要显示的内容),取值为字符

串或数组。

●Units单位属性,取值可以是pixels, normalized(归一化), inches, centimeters或

points。GUI设计时经常使用归一化单位。

表1:各种控件的外形、特征及应用

●Position 指明控件的位置。其值是4元素向量[left bottom width height], 前2个指明控

件左下角在其父对象(一般是图形窗)左下角的位置,后两个指明控件的高度和宽度。这些值的单位由Units属性给出。

●Max 控件的最大值属性,其值为一标量,不同的控件类型有不同的最大值属性。默

认值是1。对于滑标(滚动条),Max属性值定义了滑标的最大值;对于弹出式菜单,则定义了最大下标值;对于可编辑文本框,当Ma x-Min >1 时,可编辑多行文本。

●Min 控件的最小值属性,其值为一标量,不同的控件类型有不同的最小值属性。默

认值是0。对于滑标,Min属性值定义了滑标的最小值;对于弹出式菜单,则定义了最小下标值。

●Value控件的当前值属性,其值为一标量或向量,取决于控件类型。单选按钮以及复

选框被选中(on 态)时,其当前值属性Value的属性值应设定为Max属性的值(即该控件类型的最大值);反之未被选中时(off态,默认),则Value属性设定为Min的属性值。对于滑标,其Value属性值的设置范围是[Min, Max];对于弹出式菜单,把Value 值设置为1时,表示选中第一项,设置2则选中第二项,以此类推,反之,选中第一项,则弹出菜单的value值为1,......;文本对象和功能按钮无此属性。

●Callback回调属性,其值为字符串,可以是某个M文件名或一小段MATLAB语句,当

用户激活某个控件对象时,应用程序就运行该属性定义的子程序,使控件产生动作。后面将重点介绍callback程序的编写。

3.制作用户控件

用户控件通过使用命令uicontrol来制作,其使用格式为:

H=uicontrol(H_parent,’PN’,PV,…)

其中,H是用户控件的句柄,H_parent是其父对象句柄。PN,PV为(属性名,属性值)二元组,用来定义控件的属性。

例1:h1=uicontrol(gcf,'style','radio','string','斜体', 'units',...

'normalized','position',[0.6 0.4 0.1 0.05]);

% 用uicontrol指令在当前窗口创建一个单选按钮(radiobutton)

set(h1,’Value’,get(h1,’Max’)); % 单选按钮“斜体”默认为选中状态

h2=uicontrol(gcf,'style','slider','Max',2.02,'Min',0.02,...

'sliderstep',[0.01 0.05],'value',0.5,'units','normalized',...

'position',[0.6 0.48 0.2 0.05]);

%该语句创建了一个滑标,其中Max和Min属性的值决定了滑标表示的数值的上下限,即[0.02 2.02]。滑标的sliderstep属性是一个二元数组,第一个元素决定由两端箭头操纵滑动时的步长(微调),本例为0.01×(2.02-0.02);第二个元素决定游标操纵滑动时的步长(粗调),本例为0.05×(2.02-0.02)。

h3=uicontrol(gcf,'style','text','string','当前滑标值=0.5',...

'units','normalized','position',[0.6 0.55 0.2 0.04]); %创建文本框set(h2,'callback',['z=get(gcbo,''value'');','set(h3,''string'', [''当前滑标值='',num2str(z)])']);

% 在文本框显示滑标当前值;gcbo 返回当前正在执行回调动作的对象(此处是h2)的句柄h_check1=uicontrol(gcf,'style','checkbox','string',...

'最大峰值','units','normalized','position',[0.6 0.32 0.2 0.04]);

h_check2=uicontrol(gcf,'style','checkbox','string',…

'上升时间(0->0.95)','units','normalized','position',...

[0.6 0.25 0.2 0.04]);% 创建2个复选框

程序运行结果如图所示,若只勾选第一个复选框“最大峰值”,则该控

件的当前值value等于最大值Max(=1),第二个复选框的当前值value

值则等于最小值Min(=0)。在命令窗口输入get(h_check1,'value')

以及get(h_check2,'value')可以查看到两个复选框的当前值。

5.编写回调函数

设置控件之后,要想让控件产生动作,完成用户的意图就需要合

理设置控件的回调属性(callback),把能完成用户意图的一条或几条

Matlab指令以字符串(i.e.加单引号对)的形式设置为callback的属性值,如例1中:set(h2,'callback',['z=get(gcbo,''value'');','set(h3,''string'', [''当前滑标值='',num2str(z)])']); % 单引号中的双引号代表单引号

滑标对象h2的callback属性值(单引号对中的内容)包含下列2条指令z=get(gcbo,'value');

set(h3,'string',['当前滑标值=',num2str(z)]);% 用[]构成字串矩阵

这两条指令的目的是把滑标选择的数值实时地在文本框h3中显示出来。第一条指令是获取

相关文档
最新文档