目录

  • GUI编辑器
  • 控件
    • 属性
    • 回调函数
  • MATLAB常见的控件
    • 普通按钮
    • 切换按钮
    • 可编辑文本
      • 字符获取
      • 字符显示
    • 复选框
    • 单选按钮
    • 弹出式菜单
    • 滑动条
    • 列表框
    • 坐标区
  • 附录
    • 各文件共享数据
      • 保存
      • 获取

GUI编辑器

MATLAB的GUI编辑器在命令行窗口输入“guide”启动,选择模板并点击确定后创建对应的.fig文件和.m文件。创建完成后如下图所示,左侧为各类控件,右上角为完成后运行GUI。控件的属性、.m文件为函数文件,存放各个控件的相应回调函数。将左侧控件左键单击拖动即可进行摆放。此时右键单击控件即可操作控件的属性、回调函数等。

控件

控件是GUI最基本的组成部分,不同控件组成的UI界面可用于交互,用户对UI界面中控件的动作,比如按下按钮,向编辑栏输入数据等,则会调用相应的回调函数,执行预先设定好的命令,进而实现交互。

MATLAB的GUIDE中包含常见的按钮、可编辑文本等常见的控件,基本上可以满足用户对UI的设计,并且还增加了ActiveX控件(对ActiveX控件暂时不太明白怎么用)。

属性

控件属性决定了控件的颜色、大小、显示内容等,某些控件可能会有特有的属性,控件的属性可以通过双击控件以弹出该控件的属性检查器或右键点击控件后选择“属性检查器”(UI界面可以通过双击空白区域或右键点击空白区域),左栏为属性名称,右栏为属性值。下面介绍控件常见的属性:

  1. Enable
    该属性的值与对应描述如下表所示。
属性值 描述
on 控件正常显示,可正常使用
off 控件变暗,不可使用
inactive 控件正常显示,但不可使用
  1. String
    控件显示的文本,对可编辑文本、列表框等控件比较重要。

  2. Tag
    控件特定的标签,每个控件的属性Tag的值不同,通过代码完成控件属性值的设置或读取需要通过该属性。

控件的属性除了在设计UI界面时设置外,在代码中也可以进行属性值设置与读取,分别通过set和get函数完成,两个函数示例如下所示。

get(handles.edit_mod_id, 'String');       %注意属性String通过单引号'括起
set(handles.edit_mod_id, 'String', Str);

get函数用于读取相应属性的值,第1个参数用于选定控件,第2个参数指定需要读出值的属性,该函数的返回值即为相应属性的值(需要注意的是返回值类型不一,可查看MATLAB属性介绍)。

第1个参数格式为UI界面句柄.控件标签,UI界面句柄一般为handles,一般为回调函数的第3个参数,控件标签即为上述的Tag属性值。

set函数用于设置相应属性的值,第1个参数用于选定控件,第2个参数指定属性,第3个参数为写入值。

在属性检查器,右键相应属性名称,再点击弹窗,即可查看MATLAB对该属性的介绍。

回调函数

控件回调函数,即用户对控件进行相应操作后,后台执行的函数,不同控件具有的回调函数不同,并且除了控件外,UI界面同样有其回调函数,通过选中控件 → 右键点击 → 查看回调,再点击相应回调函数,即可在.fig文件对应的.m文件中生成相应控件的回调函数(UI界面的回调函数生成类似,通过点击空白处以选中界面)。下面介绍一下常用的回调函数(部分控件会有特有的回调函数):

  1. CallBack
        最常用的回调函数,控件进行默认操作时被调用,默认操作例如按钮按下、复选框选中、滑动条滑动等。

  2. ButtonDownFcn
        鼠标右键点击控件时被调用。

  3. CreateFcn
        在生成这个控件时被调用,该回调函数不止控件具有,整个界面同样存在,当然,整个界面的CreateFcn函数可以用对应.m文件的第2个函数xx_OpeningFcn代替,可用于界面创建后初始化相应全局变量。

  4. DeleteFcn
        类似CreateFcn,在控件被销毁(一般是整个界面被关闭时被调用)。

  5. KeyPressFcn
        当控件被选中(获得焦点)并且有按键按下时,该函数被调用,例如可编辑文本,通过键盘向其输入时会调用该函数(使用输入法输入的话好像没有调用)。

获得焦点,或者说被选中有1个很好的例子,比如打开1个记事本,在点击1个网页,此时点击键盘,输入的内容不会出现在记事本中。

MATLAB常见的控件

控件”面板“、”静态文本“无需回调函数或特殊属性,存在的作用就是单纯的显示(当然实在想加也可以加创建、销毁回调),在此不多介绍。

普通按钮

控件“普通按钮”实际上就是1个按钮,通过鼠标左键单击时调用 Callback 函数,右键单击时调用 ButtonDownFcn 函数。

注意,”KeyPressFcn“这种回调函数虽然“普通按钮”这种控件也可以使用,但这个Press是指键盘按键按下,而上面两个函数是在UI界面中点击按钮。

切换按钮

相比于“普通按钮”,控件“切换按钮”不会自动弹起,即点击之后会固定显示,再次点击才会恢复,与属性‘Value’的值有关,未按下时‘Value’对应属性‘Min’的值,为0。按下后变灰,‘Value’对应属性‘Max’的值,为1。

同样的,“切换按钮”和”普通按钮“一样有callback和ButtonDownFcn两种回调函数,效果一致,左键单击调用callback函数时,自动切换属性’Value‘的值,同时切换按钮状态(每次切换状态都会调用callback),而右键单击则调用ButtonDownFcn函数,但仅此而已,不会修改属性’Value‘的值,以及切换按钮状态。

可编辑文本

控件“可编辑文本”具有5种回调函数,但一般都不会使用,作为可编辑文本一般有两种用法:获取输入的字符、显示字符,这两者分别通过get函数和set函数操作String属性即可。

从左侧拖动放置的“可编辑文本”,一般只有单行显示,而且固定上下居中,输入大量数据时多余数据会消失在左侧,如下图所示。


       若需要多行显示,可以将“可编辑文本”的属性”Max“设置为大于1的值,此时“可编辑文本”显示的数据会到最上面,并且会自动换行、添加1个滑动条,如下图所示。

如果需要可编辑文本中的文本左对齐的话,设置属性‘HorizontalAlignment’为left即可,运行时文本会自动向左上角对齐。

字符获取

字符获取的意思是获取输入框的内容,相关属性为‘String’,一般使用get函数,代码如下所示,edit_mod_id为输入框空间的属性‘Tag’的值,通过该函数返回1个字符串数组(不是因为后面的’String’!)。

get(handles.edit_mod_id, 'String');

由于获取的是字符串,因此一般需要进行转化:

  1. hex2dec(hex_str):将十六进制字符串hex_str转为十进制数,'12’变为18。
  2. char(num):将对应十进制数字num转为对应Unicode的字符,56变为’8‘。

注意,MATLAB的十六进制只能以字符串形式表示。

字符显示

字符显示指将字符串显示在输入框中,相关属性为‘String’,一般使用set函数,代码如下所示,str为字符串变量。

set(handles.edit_mod_id, 'String', Str);

由于参数是字符串,因此一般需要进行转化:

  1. sprintf(‘%c’,num):将十进制数字转化为对应Unicode的字符,单引号内为%c时等效于char(num)
  2. num2str(num):将十进制数字转化为对应的字符串。123变为‘123’

注意上面的字符显示函数为set,所以是设置字符串而不是添加字符串,添加字符串可以尝试下面的代码:

persistent str;                %设置str为静态变量,persistent作用和C语言的static类似
str=[str, '添加的字符串'];     %合并
set(handles.edit_mod_id, 'String', str);

对应的,设置整个文件的函数都能用的变量可以用global,在每个需要用到该变量的函数都用global进行定义即可(此时只有第1次使用是定义,后面起始都是声明)。

复选框

控件”复选框“重点的属性为’Value‘,代表是否被勾选,当’Value‘的值等于属性’Max‘的值时,显示被勾选。等于属性’Min‘的值时,显示不被勾选。因此同样可以通过get和set获取或设置复选框的状态。

当’Value‘的值既不等于’Max‘,也不等于’Min‘时,复选框不可见。

单选按钮

控件”单选按钮“用于让用户在多个选项中选择1种。必须与‘按钮组’组合,否则作用和复选框没区别,将其放在控件”按钮组“内后,有且只有一个”单选按钮“会被选中(如果不在”按钮组“内则无该约束)。同样,单选按钮重点的属性为’Value‘,代表是否被选中,当’Value‘的值等于属性’Max‘的值时,显示被选中。等于属性’Min‘的值时,显示不被选中。

弹出式菜单

控件”弹出式菜单“重点的属性在于’String‘和’Value‘,前者决定弹出可选的内容(也就是上面的选项1、2、3…),后者决定目前选中的内容(如上,此时选项5,则’Value‘的值为5)。设置代码参考如下,此时弹出相应选项,并且当前选中选项5。一般可以在界面打开时调用该段代码,也就是xx.fig对应的xx.m的第2个函数,末尾为’_OpeningFcn‘的函数中调用。

set(handles.popupmenu1, 'string', {'选项1', '选项2', '选项3', '选项4', '选项5',...'选项6', '选项7', '选项8'}, 'value', 5);  %上一行的...为续航符

至于获取当前用户选中的选项,当然就是通过get函数获取属性’Value‘的值咯。

滑动条

控件”滑动条“好像一般不会使用到,毕竟最需要的可编辑文本已经自带了。滑动条重点的属性在于’Value‘,其范围为属性’Min‘至’Max‘之间,滑动会使得属性’Value‘的值变化,在代码中可以通过set函数获取滑动条的值。

值得一提的是滑动条的回调函数callback,拖动滑动条然后停止,callback函数会在停止时被调用,也就是说可以在这时获取属性’Value‘的值。

列表框

控件”列表框“用于列举选项,给用户提供一种选择,重点的属性在于’String‘和’Value‘,’String‘属性为列表框中的内容,如果需要通过set和get函数操作,需要注意操作的是元胞数组,每个元胞都是一项内容。’Value‘属性为当前被选中的内容,从1开始。

”列表框“和”弹出式菜单“这两种控件在作用上十分相似,不过前者占用空间比较大,虽然有滑动条,但也不太方便。

控件”表“的重点属性为‘Data’,顾名思义就是表格内的数据,通过get和set函数可对其进行操作,注意操作的是元胞数组(该元胞数组是整个表格的内容),每个单元格的内容又是一个元胞数组,而这个元胞数组内,包含1个字符数组,也就是单元格的内容。

在GUIDE中,可以通过属性检查器进行表头设置,如下图所示,点击该图标后在弹出窗口的左侧可分别设置行、列的表头, 在列属性的设置中,还可以选择该列的单元格是否允许编辑(表的内容默认是不可编辑的)。

表的回调函数包括CellSelectionCallback、CellEditCallback,当某个单元格被选中时调用CellSelectionCallback函数,当编辑完成(编辑后选择其它单元格或点击Enter)后调用CellEditCallback函数。

坐标区


       控件”坐标区“用于绘图,绘图相应的知识点可以参考MATLAB绘图一文,”坐标区“的重点属性为‘XTick’和‘YTick’,表示”坐标区“横纵轴显示的数目(如上图所示,‘XTick’值为[1x3 double array]因此显示3个数,‘YTick’为[1x6 double array]因此显示6个数)。

注意,坐标轴的范围只与绘制曲线的值有关,即MATLAB会自动进行相应调整。

在控件”坐标区“上绘图,使用的函数同样是plot函数,当然第1个参数应选中”坐标区“这个控件,如下所示。

plot(handles.axes1, xLeft, yLeft, xRight, yRight);

附录

各文件共享数据

建议各文件共享数据使用global修饰需要共享的变量,在使用的函数内使用global,运行第1次时会进行定义,后面都是声明,指向同一个变量。

通过setappdata和getappdata可将某个数据在各个m文件中传递:

保存

%obj为对象,UI对象的话可以查看fig文件里面各个函数第一个参数,一般好像是hObject
%name为字符串,可随意定义
%val为存储的值
setappdata(obj,name,val) 存储 val 的内容

获取

%同上,取出上次存储的值
val=getappdata(obj,name);

MATLAB(6)GUI应用介绍相关推荐

  1. 手写数字识别问题(2)——利用matlab搭建GUI界面

    经过GUI的学习(详见博客:https://blog.csdn.net/didi_ya/article/details/105357279 ),小白逐渐了解了MATLAB的GUI界面及其搭建.下面是我 ...

  2. matlAB gui 变成c,matlab改变GUI和figure左上角图标的方法,并生成exe文件

    1. GUI左上角图标的更改,假设GUI的Tag为figure1,在其OpeningFcn里添加 h = handles.figure1; %返回其句柄 newIcon = javax.swing.I ...

  3. 圆形上下挤压 matlab,基于Matlab的GUI设计双螺杆挤压机系统仿真软件

    基于Matlab的GUI设计双螺杆 挤压机系统仿真软件 王玉德,张文孝,韩翠玲 (1.大连水产学院,辽宁大连116023;2.山东省机电学校,山东兖州272105) 1 1 2 DesignofSim ...

  4. matlab用gui 画函数,MATLAB GUI ,2,使用MATLAB的函数来实现MATLAB GUI,part 1,图

    一 概述 其实MATLAB的GUI完全可以使用MATLAB中各种控件的函数来实现,也可以说GUI就是一个figure,本人也是对MATLAB GUI比较感兴趣的一个学习者,在学习MATLAB过程中,搜 ...

  5. matlab的gui界面怎么用,MATLAB的GUI界面基础操作

    今天我们来学习如何用MATLAB的GUI界面进行一些简单的操作,因为GUI界面可以很简单的制作界面,按钮系列,直接拖拽即可,而不需要用代码对界面进行编写,只需要对里面的具体功能进行编码,我们今天就运用 ...

  6. matlab火控雷达,基于MATLAB的GUI设计伺服系统仿真软件

    ·2003年 3月 火控雷达技术 第 32卷 j ' . 基于 MATLAB的GUI设计伺服 系统仿真软件 王 唪 李 忱 .. (南京 电子技术研 究所 南京 210013) 一 _ . , ● [ ...

  7. MATLAB软件GUI应用程序

    12.1图形用户界面(GUI)介绍 图形用户界面是为用户和程序之间提供信息交流的一种方式,用户可以通过鼠标.键盘等输入设备即可对计算机中复杂的问题进行处理.用户只需要通过界面交互就可以正确的执行,而无 ...

  8. 基于MATLAB软件GUI界面的可编程电音合成器软件

    基于MATLAB软件GUI界面的可编程电音合成器软件 1 总体设计 1.1 设计思路 1.2 软件运行 2 软件功能说明 2.1 软件界面 2.1.1 菜单栏 2.1.2 工具栏 2.1.3 MySy ...

  9. 存储论matlab,基于MATLAB的GUI设计应用软件

    Microcomputer Applications Vol. 27, No.8, 2011 技术交流 微型电脑应用 2011年第27卷第8期 ·53· 文章编号:1007-757X(2011)08- ...

  10. 基于YOLOv4的目标检测系统(附MATLAB代码+GUI实现)

    摘要:本文介绍了一种MATLAB实现的目标检测系统代码,采用 YOLOv4 检测网络作为核心模型,用于训练和检测各种任务下的目标,并在GUI界面中对各种目标检测结果可视化.文章详细介绍了YOLOv4的 ...

最新文章

  1. PyTorch 笔记(09)— Tensor 线性代数计算(torch.trace、torch.diag、torch.mm、torch.dot、torch.inverse逆矩阵、转置)
  2. slave-pxc后GTID不一致
  3. Visual Studio® 2010 Web Deployment Projects站点编译生成bin同时发表插件
  4. wxWidgets第九课 wx绘图工具
  5. C++ qsort() 函数调用时实参与形参不兼容的问题解决
  6. Asterisk配置文件说明
  7. Eclipse/MyEclipse注释模板和格式化模板的使用
  8. 【转载】规则化和模型选择(Regularization and model selection)
  9. 代码比对方法/代码比对工具
  10. Matlab中pickic_MATLAB中uigetfile命令的应用
  11. 几行代码,搞定 SpringBoot 接口恶意刷新和暴力请求!
  12. 机器码反编译c语言,如何把任意一段机器码或unicode码反汇编成汇编指令
  13. 综合布线:如何选择多模光纤和单模光纤
  14. 记录自己在pyqt5用电脑摄像头拍照并保存照片过程中发现的问题
  15. 海康威视网络摄像头配置本地存储服务器(远程连接查看回放)
  16. Matlab二维坐标下极坐标向直角坐标的转换
  17. shading interp;
  18. 不需要支撑结构的3D打印技术:多轴机器人3D打印系统
  19. Centos7 为开发而翻越
  20. 开阳大数据产业行动计划出炉

热门文章

  1. RC振荡电路 双三极管多谐振荡器
  2. php7 opcache 编译,PHP7中用opcache.file_cache导出脚本opcode实现源代码保护
  3. 计算机excel还原,Excel文件恢复软件(Magic Excel Recovery)
  4. 从0基础到10w册数据分析书籍的畅销书作家
  5. OA系统选型,明确需求是关键
  6. windows下重装系统时驱动备份和恢复命令
  7. ES Transport Client学习
  8. 思科路由器配置命令详解及实例
  9. linux添加变色龙引导,变色龙引导界面屏蔽多余盘符并默认启动Mac _ 黑苹果乐园...
  10. ftp服务器管理网页,ftp服务器 web管理工具