MATLAB GUI(Graphical User Interfaces-
图形用户界面)设计与制作
专题讲稿-简单版
王正盛 编写 2008-10-20
(南京航空航天大学理学院数学系,南京 210016)
目录:
1、 MATLAB 图形用户界面(GUI)介绍
2、 图形用户界面中的图形对象的树结构层次关系图(Tree-structured hierarchy)
3、 图形用户界面的设计原则和一般步骤
4、 图形窗口的建立与控制
4.1 图形窗口的创建
4.2 图形窗口的常用属性
4.3 图形窗口的控制函数
5、 界面菜单的设计(uimenu)
5.1 用户菜单的创建
5.2 菜单对象的常用属性
6、 界面用户控件的设计(uicontrol)
6.1 控件种类与控件制作函数
6.2 控件制作示例
6.3 帮助、出错、警告窗口的设计
7、 用户界面设计工具
8、 常见 MATLAB GUI 举例
王正盛 2008-10-20-MATLAB GUI 设计-专题讲稿-简单版
1
1 MATLAB 图形用户界面(GUI)介绍
用户界面(或接口)是指:人与机器(或程序)之间交互作用的工具和方法。
如键盘、鼠标、跟踪球、话筒都可成为与计算机交换信息的接口。
图形用户界面(Graphical User Interfaces ,GUI)则是由窗口、光标、按键、
菜单、文字说明等对象(Objects)构成的一个用户界面。用户通过一定的方法(如
鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实
现计算、绘图等。
假如读者所从事的数据分析、解方程、计算结果可视工作比较单一,那么
一般不会考虑 GUI 的制作。但是如果读者想向别人提供应用程序,想进行某种
技术、方法的演示,想制作一个供反复使用且操作简单的专用工具,那么图形用
户界面也许是最好的选择之一。
MATLAB 为表现其基本功能而设计的演示程序 demo 是使用图形界面的最好
范例。MATLAB 的用户,在指令窗中运行 demo 打开那图形界面后,只要用鼠标进
行选择和点击,就可浏览那丰富多彩的内容。
即便比较熟悉 MATLAB 的读者,在他初次编写 GUI 程序时,也会感到棘
手。为使读者获得制作自己 GUI 的体验,本章“入门”节提供了一个简单的示例。
读者只要输入所提供的程序,就可引出相应的界面。
王正盛 2008-10-20-MATLAB GUI 设计-专题讲稿-简单版
2
为什么创建图形界面GUI?
在运行了
demo
例子后,很可能会问“为什么要在
MATLAB
中建立一个
GUI
?”
这是一个很好的问题,简单的回答是可能并不需要.使用
MATLAB
来分析数据,
求解问题,绘制结果的绝大多数的人,并不会发现
GUI
工具很有用。
但另一方面,
GUI
可以在
MATLAB
中生成非常有效的工具和应用程序,或是
建立演示工作的交互式界面。
生成用户图形界面的最常见的理由:
•
编写一个需多次反复使用的实用函数,菜单、按钮、文本框作为输入方
法具有意义;
•
编写函数或开发应用程序供别人使用;
•
创建一个过程、技术或分析方法的交互式示例;
•
认为
GUI
的简洁,性能良好,并且想自己实践一下。
入门例子:加法计算器(后面详细讲解制作过程)
分别用 MATLAB GUI 和 Delphi 制作了两个数加法的简单应用程序。图一是
用 Delphi 制作的,图二是用 MATLAB GUI 制作的。明显可见用 GUI 制作的加
法器可以进行向量加法,而且可以直接应用内部函数,如 sin(x),abs(x)等等,另
外还可以进行复数运算。这些都比 Delphi 制作的加法器优越。
王正盛 2008-10-20-MATLAB GUI 设计-专题讲稿-简单版
3
M 文件代码:(add.m)
clf reset
set(gcf,'unit','normalized','position',[0.1,0.2,0.64,0.35]);
set(gcf,'defaultuicontrolunits','normalized');
set(gcf,'defaultuicontrolfontsize',12);
set(gcf,'defaultuicontrolfontname','隶书');
set(gcf,'defaultuicontrolhorizontal','left');
str='加法计算器 with MATALB';
set(gcf,'name',str,'numbertitle','off');
hedit1=uicontrol(gcf,'style','edit','unit','normalized',...
'position',[0.1,0.65,0.232,0.18],'horizontal','left',...
'callback','z1=str2num(get(gcbo,''string''));');
hedit2=uicontrol(gcf,'style','edit','unit','normalized',...
'position',[0.5,0.65,0.232,0.18],'horizontal','left',...
'callback','z2=str2num(get(gcbo,''string''));');
hedit3=uicontrol(gcf,'style','edit','unit','normalized',...
'position',[0.45,0.25,0.232,0.18],'horizontal','left');
%z3=z1+z2
ht1=uicontrol(gcf,'style','push',...
'string','加法运算',...
'position',[0.17,0.345,0.2,0.2],...
'callback', 'set(hedit3,''string'',num2str(z1+z2))');
gcf ---------- get current figure
gcbo ---------- get handle to current callback object
gca ----------- get handle to current axis
王正盛 2008-10-20-MATLAB GUI 设计-专题讲稿-简单版
4
2 图形用户界面中的图形对象的树结构层次关系图
(Tree-structured hierarchy)
GUI对象层次结构
正如我们在上一章所展示的那样,由图形命令生成的每一事物是一个图形对
象。图形对象不仅包括uimenu和uicontrol对象,而且还包括图形、坐标轴和他们
的子对象。从另一个角度来看这一层次结构。计算机的屏幕本身是根结点,图形
是根对象的子对象,坐标轴,uimenu
,uicontrol是图形的子对象。
根可以包括多个图形,每个图形含有一组或多组坐标轴以及其子对象,每个
图形也可以有一个或多个与坐标轴无关的uimenu和uicontrol。虽然uicontrol对象
无子对象结点,但他们确实具有多种类型。uimenu对象常将其它的uimenu对象
作为其子对象。
根
计算机屏幕
图图
Uimenu Uicontrol
型式:
按钮键
无线按钮键
检查框
滑标
弹出式菜单
框架
文本
编辑
uimenu
uimenu
座标轴
父
子
兄弟
图1 GUI对象层次结构图
注意:运行 MATLAB 的不同型号的计算机或平台上,产生不同的图形显示。Unix
工作站使用不同的 X Window 系统,具有几个窗口程序,如 mwn 或 twm 以控制
显示的布局。 PC 机靠 Microsoft Windows 或 Windows NT 进行窗口管理,
Macintosh 计算机用 Macintosh 工具箱程序作窗口。虽然在各种平台上,显示看
起来有很大的不同,但在很多的情况下,句柄图形的编码是一致的。体现句柄图
形例程的函数,包括应用 uimenu 和 uicontrol 对象的函数,通常运行在所有平台。
王正盛 2008-10-20-MATLAB GUI 设计-专题讲稿-简单版
5