1、- 1 -GUI 指导 教程系列(1) :GUI 入 门基本操作为什么在 Matlab 中要使用 GUI 呢?其实 GUI 就是 Matlab 中的Visual Basic,是面向 对 象的编程,可以使 Matlab 程序的终端用户,即使不懂的 Matlab 也可以轻易操作该程序。如果没有图形用户界面(GUI)我们只能从命令行(Command Window)中调用相关程序,这相对比较繁琐,并且不是所有用户都有这个能力。就好比计算机的 DOS 系统,在有 windows 的情况下,您会选择 DOS 吗 ?当然也不排除骨灰级的人物。在本节教程我们主要针对没有 GUI 创建和使用经历的网友,但是必要
2、的 MATLAB 基础知识是需要的。在教程中我 们将创建一个简单的 GUI 程序,它执行两个数的加法运行,然后显示其运算结果。什么 Matlab 还没有安装?那请您先看下论坛的 【MATLAB 下载安装】版块( 最新版本 2009b,4.75GB),里面有您在 Matlab 下载安装过程中需要的一些资料,下面开始我们的教程。一、打开和创建 GUI 界面1、首先打开 Matlab,在 Command Window 中输入 guide 回车。- 2 -当然也可以通过工具栏的 GUIDE 按钮直接打开。2、此时打开 GUI 编辑器 GUIDE(GUI Developer 的缩写)2.1 界面上有两个
3、标签也“Creat New GUI”和“ Open Existing GUI”。如果创建新的 GUI 此 时我们选择第一个标签页,但如果打开其它已经存在的 GUI 就点击 第二个标签吧。2.2 这里我们选择第一个标签下的“ Blank GUI”(空白 GUI),下面还有几个系统 GUI 模板,你可以根据需要选择其它的模板。- 3 -2.3 点击“OK” 我们正式 进入 GUIDE 界面,呵呵,是不是感觉似曾相识。3、添加你需要的控件到 figure 中,在添加控件之前,您最好对您的 GUI 界面布局已 经 有一定的构思了,否则盲目性太大了,不利于您的编程。下面是我们构思的布局。- 4 -二、添
4、加控件和设置属性在正式讲解之前,我们先讲解下 GUI 中的鼠标基本操作:(a) 在左边的控件面板中鼠 标左击选择您需要的控件,然后放开鼠标。(b) 在右边的 figure 中按住左键,画出您的控件,于是控件就出现在 figure 上。(c) 你可以用鼠标拖拽 figure 上所有控件,来改变他们的位置。(d) 在控件上双击鼠标左键(右击是快捷菜单)可打开控件“属性查看器”。1、从上面的布局构思,我们知道本 GUI 需要以下控件:两个“编辑文本框”(Edit Text);:四个“静态文本框”(Static Text);:一个“确定按钮” (Push button);按照上面介绍的鼠标操作方法,将
5、这 6 个控件拖到右边的 figure中,如下图 所示。- 5 -2、接下来就是编辑这些控件的属性下面从 Static Text 开始,双击其中一个“静态文本框”,将弹出该控件的“属性 查看器” (Property Inspector)。GUI 控件的几个常用属性说明如下:position:指示空 间在 figure 中的位置font*:字体相关属性string:相当如 VB 中的 caption,就是显示在控件上的文字tag:控件的唯一 标识符,相当于 ID,我们需要 tag 来指定 figure中的某一个控件。2.1 在这里把它的“ string ” 属性修改为“ + ” ;- 6 -2.
6、2 再修改它的“ fontsize ” 属性为 20。编辑完这些属性后,直接点击右上角的“关闭” 按钮,关闭属性查看器,此时 属性会自动保存。回到 GUIDE,如果控件上的文字被部分隐盖,此时 可以通过鼠标拖拽改变控件的大小。2.3 重复上面的操作:(1)将第二个“ Static Text ”的“ string ”改为“ = ” ;(2)将第二个“ Static Text ”的“ fontsize ”改为 20;(3)将第三个“ Static Text ”的“ string ”改为“ My Adder GUI” ;(4)将第三个“ Static Text ”的“ fontsize ”改为 20
7、;(5)将第四个“ Static Text ”的“ string ”改为“ 0 ”;(6)将第四个“ Static Text ”的“ tag ” 改为 “ answer_staticText ” 。于是,我们将得到如下所示的 GUI 界面:- 7 -2.4 下面双击 Edit Text,修改 “编辑文本框”的属性:(1)第一个 “ Edit Text ”的用来存储第一个加数,我 们将“ string”改为“ 0”,“tag”改为“input1_editText”。(2)第二个 “ Edit Text ”的用来存储第二个加数,我 们将“ string”改为“ 0”,“tag”改为“input2_
8、editText”。2.5 修改 Pushbutton 按钮的属性, “string”改为“Add!” ,“tag”改为“add_pushbutton”。- 8 -再次预览下我们现在得到的 GUI 界面3、重新布局和移动控件位置,使其美观。- 9 -将上面编辑完的 GUI 程序保存为 myAdder,此时在当前目录下,Matlab 将自动生成如下来个两个文件 myAdder.m 和 myAdder.fig。.fig 文件包含了程序的图形用户界面,.m 文中包含了 GUI 所需的回调函数和其他必须代码。三、书写 GUI 回调函数(callback)代码在保存 GUI 程序时,Matlab 会自动
9、生成.fig 和.m 文件,其中的.m就是我们现在要操作的对象。我们就是在 M 文件中添加控件的回调函数,来完成用户的相应操作,这也是 GUI 编程的核心内容,它要求你必须掌握 Matlab 基本编程以及图形句柄语句。打开.m 文件,发现里面有很多 function 的代 码,看得我们眼花缭乱,呵呵,不要胆怯!本教程是初级教程,我们只涉及里面的callback,其它的项我们 可以暂时置之不理,我们以后的教程中对其它项做出相关地介绍。在正式讲解之前,先介绍一个使用小技巧,Matlab Editor(代码编辑器) 工具栏显 示函数按钮 ,可以让我 们快速跳转我们需要的函数位置,这 个在.m 文件的
10、内容很多的时候是很有用的。1、在 Editor 中的工具 栏上, 单击 Show Function,从中选择input1_editText_Callback,或者右击 tag 为 input1_editText 的编辑文- 10 -本框,View CallbackCallback。2、此时光标会跳转到.m 文件的 function input1_editText_Callback 处,以方便我们直接编辑。function input1_editText_Callback(hObject, eventdata, handles)% hObject handle to input1_editTex
11、t (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hint: get(hObject,String) returns contents of input1_editText as text% str2double(get(hObject,String) returns contents of input1_editText as a double在上面代码下面添加如下 MATLAB 代码:% handles 包含 figure 中所有图形对象句柄的结 构体,如果我们想引用 tag 为