MATLAB--S6:GUI设计开发


【学习知识点】 MATLAB的GUI开发环境、开发实例和接口控件。理解用户图形界面 程序的构造,掌握其编程方法。

  • GUI是由各种图形对象如图形窗口、坐标轴、菜单、按钮、文本框等构建的用户界面,是人机交互的有效工具和方法。
  • 通过GUIDE可以很方便地设计出各种符号要求的图形用户界面。用户通过一定的方法(如鼠标或键盘)选择,激活这些图形对象,使计算机产生某种动作或变化,实现计算,绘图等。
  • GUIDE是一个界面设计工具集。MATLAB将所有GUI支持的用户控件都集成在这个环境中,并提供了界面外观、属性和行为相应方式的设置方法。
  • MATLAB为表现基本功能设计了很多演示程序demo–这些是学习图形界面很好的范例。

6.1 可视化界面环境

MATLAB提供了一个可视化的图形界面开发环境。其功能类似微软开发的Visual Basic,使用它不需要很多的专门预备知识。
【如何新建】1. 新建菜单下 2. 命令行:guide

6.1.1 GUI设计模板

MATLAB为GUI设计一共准备了4种模板,分别是Blank GUI、GUI with Unicontrols(带控件对象的GUI模板)、GUI with Axes and Menu(带坐标轴与菜单的GUI模板)与Modal Question Dialog(带模式问话对话框的GUI模板)。当用户选择不同的模板时,在GUI设计模板界面的右边就会显示出与该模板对应的GUI图形。

6.1.2 GUI设计窗口

  • 在GUI设计模板选中一个模板,然后单击OK按钮,就会显示GUI设计窗口。选择不同的GUI设计模式时,在GUI设计窗口中显示的结果是不一样的。GUI设计窗口由菜单栏、工具栏、控件工具栏以及图形对象设计区组成。
  • GUI设计窗口的菜单栏有File、Edit、View、Layout、Tools和help共6个菜单项。使用其中的命令可以完成图形用户界面的设计操作。
  • 在GUI设计窗口的工具栏(上方菜单栏下)上,有Align Objects(位置调整期)、Menu Editor(菜单编辑器)、Tab Order Editor(Tab 顺序编辑器)、M-file Editor(M文件编辑器)、Property Inspector(属性查看器)、Object Browser(对象浏览器)和Run等16个命令按钮,通过它们可以方便的调用需要使用的GUI设计工具和实现有关操作。
  • 在GUI设计窗口左边的是控件工具栏,包括:Push Button、Slider、Radio Button、Check Box、Edit Text、Static Text、Popup Menu、Listbox、Toggle Button、Axes等控件对象,它们是构成GUI的基本要素。

6.1.3 GUI设计窗口的基本操作

  • 为了添加控件,可以从GUI设计窗口的控件工具栏中选择一个对象,然后以拖拽的方式在图形对象设计区建立该对象,其对象创建方式方便、简单。
  • 在GUI设计窗口创建对象后,通过双击该对象,就会显示该对象的属性查看器,通过它可以设置该对象的属性值。
  • 在选中对象的前提下,单击鼠标右键,弹出快捷菜单–从中选择。在图形对象设计区右击,会显示与图形窗口有关的快捷菜单。

6.1.4 可视化设计工具

MATLAB设计的用户界面设计工具主要有5个,分别是:

  1. 对象属性查看器(Property Inspector): 可查看每个对象的属性值,也可以修改设置对象的属性值。
  2. 菜单编辑器(Menu Editor): 创建、设计、修改下拉式菜单和快捷菜单。
  3. 位置调整工具(Alignment Toll):可利用该工具左右、上下对多个对象的位置进行调整
  4. 对象浏览器(Object Browser):可观察当前设计阶段的各个句柄图形对象。
  5. Tab顺序编辑器(Tab Order Editor): 通过该工具,设置当按下键盘上的Tab键时,对象被选中的先后顺序。

6.2 句柄图形

  • MATLAB提供了一些用户创建及操作线、面、文字、图像等基本图像上的低级函数。----这些命令可以对图形基本对象进行更为细致的修饰和控制。
  • 低级函数不但可以产生复杂的图形,而且为动态图形提供了基础。这个系统被称为句柄图形(Handle Grapics)。

6.2.1 图形窗口对象

  • 在句柄图形中,所有的图形操作都是针对图形对象而言的。所谓图形对象是指图形系统中最基本、最底层的图元,如图形(Figure)、菜单(Menu)、线(Line)、坐标轴(Axis)、文本(Text)等。
  • 在图形窗口中,任何部分都是带句柄的图形对象。每个图形对象都有自己的句柄。通过句柄可以获取和设置所指代对象的属性。
  • 图形对象(Figure)下主要有三种对象:控件对象、下拉菜单对象和内容菜单对象等。

6.2.2 图形窗口属性

所有图形窗口对象都有属性,用户可根据具体情况改变其属性。

  • 图形窗口对象的对象可以通过Tools/Property Inspector菜单项打开属性设置对话框,从中设置图形窗口对象的表现方式等。
  • 另也可以通过程序脚本实现。若知道某个图形窗口对象的句柄为h,则可以通过get(h)获得和set(h)设置的属性列表,同样可以通过get()和set()函数获得和修改属性的值。
  • 图形窗口对象的常用属性包括Color 属性、Name属性、Visble属性、Tag属性、String属性和回调函数。
    回调函数(callback Function)是指该对象指定的事件或者消息发生时,系统会自动调用对应的函数。在当前流行的图形界面程序中都会使用事件驱动或者消息驱动的程序设计思想。
    在用户对某一对象选中单击或者双击后,执行相应的函数。只要在相应的函数中加入代码,就可以完成复杂的图形界面设计功能
    【常用的回调函数】:
  1. callback:在对象被选中时执行的函数
  2. ButtonDownFcn:单击按钮所执行的函数
  3. KeyPressFcn: 在键盘按下时执行的函数
  4. ResizeFcn: 图形窗口大小改变时执行的函数。
    5.WindowsButtonDownFcn: 在图形窗口中单击鼠标时调用的函数
    6.WindowsButtonMotionFcn: 在图形窗口中移动鼠标时调用的函数

6.3 常用控件

图形界面设计与控件是密不可分的,MATLAB提供的常用控件即可满足95%以上的功能需求,如静态文本、编辑控件等,通过这两个能够实现大部分用户输入界面设计的需求。

6.3.1 常用控件介绍

控件的外观和功能是由其属性(Property)决定的。在编辑界面对话框时,对准某个控件右击或者双击可调出其属性设置对话框。不同的控件,属性不完全相同。
【常用控件介绍】

  1. 静态文本(Static Text):用于显示字符串,不接受输入信息,多用于显示提示信息。
  2. 编辑框(Edit Text): 最常用的控件之一,可接受单行或多行的文本,可编辑,类似于一个小型的文本呢编辑器。
  3. 列表框(List Box): 显示一个文字列表,用户可从中选择一项或者多项。若选项太多,可ton过垂直滚动条来控制。
  4. 滚动条(Slider):可以用图示的方式在一个范围内输入一个数量的值。用户可通过移动滚动条之间的游标来改变所对应的值。
  5. 按钮(Push Button):对话框中常用的控件,用于响应用户的鼠标按键等操作,在按钮上通常由字符来说明其作用,如OK按钮,Cancel按钮。若单击一个按钮,则称此按钮为选中状态。
    6.开关按钮(Toggle Button):
  6. 单选按钮():一组带有文字提示的选择项。单选按钮总是成组使用的,在这组中通常只有一个按钮被选中。属于互斥关系。
  7. 检查框(Check Box): 用作选择标记,有选中,不选中和不确定这三种状态。不同于单选按钮的是,检查框一次可以选择多项。
  8. 弹出式菜单(Popup Menu):选中时可弹出一个列表框,用户可从中选择合适的项来执行。
  9. 坐标轴(Axes):是用来绘图的容器。

6.3.2 常用控件的属性

控件肯定是有其共性,都也有自己的特性,正是特性才成为决定它。每一个控件都有自己的属性,下面简单介绍一下常规属性。

  1. 控件风格和外观属性—共性
    BackgroundColor:设置控件背景颜色,使用[ R G B]或颜色定义。
    CData:在控件上面显示的真彩色图像,使用矩阵来表示
    ForegroundColor: 文本颜色
    String: 控件上的文本,以及列表框和弹出菜单的选项。
    Visible:控件是否可见。

  2. 对象的常规信息
    Enable: 表示此控件的使能状态,设置为On,表示可选,为off时则表示不可选。
    Style: 控件对象类型
    Tag:控件表示,用来唯一表示该控件。
    TooltipString: 提示信息显示。当鼠标指针位于此控件上时,显示提示信息。
    UserData:用户指定数据
    Position: 控件对象的尺寸和位置
    Units: 设置控件的位置及大小的位置
    有关字体的属性,如FontAngle,FontName等。

  3. 控件回调函数的执行
    BusyAction:处理回调函数的中断。有两种选项:Cancel为取消中断事件,queue为排队(默认设置)
    ButtonDownFcn:按钮按下时的处理函数
    Callback: 是连接程序界面整个程序系统的实质性功能的纽带。该属性值应该为一个可以直接求值的字符串,在该对象被选中和改变时,系统会自动地对字符串进行求值。
    CreateFcn:在对象产生过程中执行的回调函数
    DeleteFcn:删除对象过程中执行的回调函数
    Interruptible: 指定当前的回调函数在执行时是否允许中断,去执行其他的函数。

  4. 空间当前状态信息
    listboxTop:在列表框中显示的最底层的字符串的索引。
    Max:最大值
    Min: 最小值
    Value:控件的当前值

6.3.3 获取与设置对象属性

  • 除了利用对象属性查看器(Property Inspector)来获取与设置对象属性外,也可以通过命令窗口调用相应的函数来实现。
  • 常用函数–通过它们可以获取图形对象或者与之关联句柄,然后通过句柄就可以通过get()函数获取或者set()函数设置对象的属性。
    gcf: 获得当前窗口的句柄
    gca: 获得当前坐标轴的句柄
    gco:获得当前对象的句柄
    gcbo:获得当前正在执行调用的对象的句柄
    gcbf: 获取包括正在执行调用的对象的图形句柄
    delete:删除句柄所对应的图形对象
    findobj: 寻找对象
    【重点get()和set()函数】
  1. get():获取指定对象的属性一览;获取方法是使用函数get(h),h是图形对象的句柄。
    【例子】 h=figure; get(h);
    p=get(h,‘position’) % 获取指定对象的指定属性
  2. set(): 获取指定对象可设置的属性一览。
    【例子】 h=figure; set(h);
    set(h,‘Position’,vect);

6.4 常用对话框

这些常用对话框通过调用函数在命令行窗口中直接执行,十分方便和标准。
消息对话框:>>msgbox(‘欢迎使用MATLAB’) % 没有标题只有内容的消息框 >>msgbox(‘欢迎使用MATLAB’,‘MATLAB’,‘warn’) % 建立一个有标题的消息对话框
错误对话框: 使用errordlg函数产生错误对话框 >>errordlg(‘这是一个错误对话框’,‘MATLAB error’)
警告对话框:使用warndlg函数产生警告对话框 >> warndlg(‘这是一个错误对话框’,‘MATLAB error’)
帮助对话框:使用helpdlg函数产生帮助对话框 >>helpdlg(‘你需要帮助吗’,‘MATLAB Help’)
进度条设置对话框: 使用waitbar函数可产生进度条,作用是反映程序运行的进展情况。>>h =waitbar(0,‘请稍等…’); for i =1:10000 waitbar(i/10000) end
输入对话框:使用inputdlg函数可产生输入对话框,

prompt={'输入梯形的上帝:','输入梯形的下底',输入梯形的高'};
name='Enter trapeaia Data'
numlines=1;
defAns={'20','50','40'};
Resize='on';
answer=inputdlg(prompt,name,numlinesdefAns,'on')

列表对话框:可使用listdlg函数产生列表对话框。

p=path(path,'C:\matlab\');	% 设置路径,若为当前目录,可以省略这一步
d=dir('C:\matlab\');			% 获取指针,若为当前目录,则d=dir
str={d.name}				% 获取目录内的文件名
[sel,ok]=listdlg('Liststring',str,'PromtString','请选择文件','SelectionMode','Multiple')

问题对话框:使用questdlg产生问题对话框:
路径选择对话框:使用uigetfile函数打开一个对话框
文件保存对话框:
页面设置对话框:
打印设置对话框:
颜色设置对话框:
字体设置对话框:

6.5 菜单

菜单(Menu)在用户图形界面的应用程序中具有非常重要的地位。设计出良好的菜单系统和对话框,可以帮助用户在几乎没有说明书的情况下也能很好的应用程序。
这样的做的话,不能全用命令行来敲击,效率太低,需要用可视化的编辑工具使用。

6.6 GUI程序实例

假传万卷书,真传一案例。通过一个具体的实例–实现一个加法器。下面介绍如何进行GUI编程。
** 书写GUI回调函数(callback)代码,在m文件中追加控件的回调函数实现各种操作,这是GUI的核心内容–要求掌握MATLAB基本编程以及图形句柄语句**
这个例子使用失败,课本可能解释的不够详细。

【基本步骤】


6.7 GUI的使用经验与技巧–原则

GUI是实现人机交互的中介,具有强大的功能。可以实现许多复杂的程序模块。看得再多,不如做学得快,自己动手,不断摸索。

  • GUI实现方式:GUIDE(类似VB)OR全脚本(代码复用)。
    关于MATLAB GUI的入门,最推荐使用MATLAB的官方帮助文档,同时阅读doc/help例子
  1. 菜单和控件
  • 菜单很简单,只要弄清楚菜单之间的关系如何调用就可以了。控件的使用主要是用好CreatFun和Callback属性。CreatFcn中的语句就是在程序中运行时,就立即执行脚本。但是基本上只需要用到Callback属性。
  • 在相应控件下,添加相应的脚本就可以实现比较复杂的计算绘图等功能。
  1. 事件处理
    需要重点掌握事件处理,理解函数回调机制以及不同条件下的回调的处理。通过函数句柄来定义回调实现数据的访问和方法的实现。
  2. GUIDE和全脚本
  • GUID优势:非常容易入手,简单来说拖控件,在相应控件下写代码。
  • 全脚本如何入手:就是读代码,读demo,这样代码是可以复用的。

【缺点】:缺少例子,缺少实践。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值