MATLAB handles 结构体及用法
在本节教程中,我们将讨论什么handles结构体,以及如何使用set/get命令。如果您压根没有接触过GUI编程,建议您先看下这篇文章http://www.matlabsky.com/thread-5217-1-1.html,另外一些MATLAB基础知识也是需要的!
当面打开一个GUI程序的*.m文件时,你肯定会注意到基本所有的function中都有handles这个参数,那个这个handles到底是什么东西呢,下面我们就揭开它什么的面纱!
其实handles结构体是一个以GUI中所有控件的Tag属性为字段的结构体,每个字段的取值就是对应控件的句柄!
哦,什么是句柄呀!
呵呵,刚开始听句柄这个名词的时候的确有些不习惯,简单的说句柄类似于C语言中指针,它是某个对象的唯一标识符,通过句柄就可以找到你需要的对象了,图形对象的句柄一个double型数据。
比如说,一个GUI中有三个控件,对应的Tag属性和句柄分别为tag1和h1,tag2和h2,tag3和h3,那么此时handles结构体则具有如下形式
handles.tag1==h1
handles.tag2==h2
handles.tag3==h3
换句话说handles.tag1就是指向Tag属性值为tag1的控件,handles.tag1(句柄)就是该控件的唯一标识符!
当然我们可以手工为handles结构体添加新的字段,不过需要使用guidata(hObject,handles)对更新后的结构体进行保存,哦,这些都是后话了,等我们遇到再说吧!
下面正式开始本节教程的主要内容!
1、首先下载现在本GUI程序GUI_handles.zip(3.57 KB, 下载次数: 2900),解压到Matlab当前目录或搜索路径下
2、在Command Window中输入guide,然后回车打开“GUIDE Quick Start”对话框
3、选择“Open Existing GUI”,点击“Browser”,选择刚才解压的handles_tutorial.fig文件
4、打开的GUI界面如下图所示
5、handles结构体保存了窗体中所有Pushbutton,Radiobutton,StaticText,以及Figure 自身等控件的句柄。
如何读取这些句柄呢?这里主要有三种方法。点击GUIDE工具栏的按钮,此时自动打开对应的M文件。在76行行号右边点击下,为程序设置一个断点。
或者在76行后面添加一个keyboard命令,如下所示
还有就是使用dbstop命令,由于相对比较繁琐,感兴趣的网友请自己查看Matlab帮助。
三种方法都是为了达到通过一个目的,就是程序执行到76行时暂停,Matlab并自动切换到断点所在函数的workspace,此时我们直接在命令行查看某些数据(这也是我们调试程序重要方法)。
6、本程序就使用第二种方法,也就是在76行后添加keyboard命令
7、保存修改后的程序,运行GUI,然后点击Push Button按钮
8、此时Command Window会自动弹出,此时命令行提示符改为“K>>”,它表示程序当前处于keyboard模式,及如下所示
9、查看断点所在工作空间的变量,在Command Window中键入whos,该函数将列出Current Workspace中的所有变量
10、好下面我们仔细看看下handles结构体的真面目,在命令行键入handles,此时Matlab会给出handles结构体的详细信息。你会发现GUI中所有控件一个都没有落下。
其中“:”之前的控件的Tag,之后的是控件句柄,意思就是说handles结构体text1字段保存控件text1的句柄3.0095。
11、如果你想进一步获取radiobutton1的属性,此时需要使用get()函数,get是用来获取控件属性的
- get(handles.radiobutton1) % 如果没有指定属性,默认返回所有属性
复制代码
12、假如说,我们只对radiobutton1的string属性兴趣的话,则可以使用
- get(handles.radiobutton1,'string') % 获取指定属性
复制代码
13、如果想修改radiobutton1的string属性,则需要使用set()函数
- set(handles.radiobutton1,'string','hello world') % set(句柄,'属性名',属性值)
复制代码
看看原来radiobutton1的显示字符串是不是立即变为“hello world”了
14、同理我们可以修改GUI控件的其它属性
- set(handles.radiobutton1,'String', 'The button is changed!')
- set(handles.radiobutton1,'BackGroundColor',[1,.3,1]) % 背景颜色
复制代码
运行结果如下图所示
15、在Command Window中输入return语句,此时程序会交给Matlab,不再是刚才的keyboard模式了!
MATLAB handles 结构体及用法相关推荐
- matlab handles结构体及用法
在本节教程中,我们 将讨论什么handles结构体,以及 如何使用set/get命令.如果您压根没有接触过GUI编程,建议您先看下这篇文章 http://www.matlabsky.com/threa ...
- matlab handles结构体
https://blog.csdn.net/xrdsjb001/article/details/76373984 handles结构体是一个以GUI中所有控件的Tag属性为字段的结构体,每个字段的取值 ...
- Matlab GUI handles结构体入门
例程:help文档 Create a Simple UI Using GUIDE % Create the data to plot. handles.peaks=peaks(35); handle ...
- matlab--handles结构体及用法(转载)
在本节教程中,我们将讨论什么handles结构体,以及如何使用set/get命令.如果您压根没有接触过GUI编程,建议您先看下这篇文章http://www.matlabsky.com/thread-5 ...
- matlab根据结构体数组,用邻接矩阵和序遍历创建树形结构:
matlab根据结构体数组,用邻接矩阵和先序遍历创建树形结构: https://blog.csdn.net/C_Redrock/article/details/84980241
- matlab struct 结构体
matlab 的结构体第一次让 matlab 中的变量有了可以通过 .访问的成员变量,有了类的含义,甚至是面向对象的意味. 1. 结构体的赋值 结构体的赋值,这里不建议用下面这种形式进行统一赋值, s ...
- C语言中struct typedef 以及结构体指针用法
struct .typedef以及结构体指针用法 typedef用法 结构体指针用法 结构体初始化 typedef是类型定义的意思.typedef struct 是为了使用这个结构体方便.具体区别 ...
- Matlab:结构体数组
Matlab:结构体数组 创建标量结构体 访问字段中的值 对非标量结构体数组进行索引 当您有要按名称组织的数据时,可以使用结构体来存储这些数据.结构体将数据存储在名为字段的容器中,然后您可以按指定的名 ...
- MATLAB 访问结构体
MATLAB 访问结构体 如何查看matlab的结构体中有多少个元素? ids = fieldnames(rois); length(ids)
最新文章
- FreeBSD下安装配置Hadoop集群(三)
- Android流量统计TrafficStats类
- 西华大学计算机组成原理补考卷,浙江大学航空航天学院空天信息技术保研
- VTK:可视化之DisplayCoordinateAxes
- 如何快速转化PSD为UI界面?
- linux安装openssh 密码错误,Linux安装openssh的后门补丁
- 函数形参传递概念及问题分析
- from Crypto.Cipher import AES报错
- C语言数字转换为字符的问题
- 达内JAVA云笔记_达内云笔记项目完整代码+注释
- 记录mt7615e wifi 驱动移植到openwrt cc
- X32位 天堂2 二章/三章 服务端协议号修改方法
- android 广播监听截屏,Android 应用监听截屏操作
- ShFileOperation函数详解
- linux系统的优点
- idea+phpstudy完成php对数据库的操作
- 某app登录协议逆向分析
- 卸载oracle方法
- jsp高校活动管理系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目
- win7上编译ipmitool
热门文章
- Mysql 通过 binlog日志 恢复数据(数据搞丢看过来)
- 在一个递增有序的线性表中,有数值相同的元素存在。若存储方式为单链表,设计算法,去掉数值相同的元素,使得表中不再有重复的元素。
- 阿里风控大脑如何应用大数据来构建风控体系?
- 最新 解决 VMware 虚拟机 中被提示 Sorry, this application cannot run under a Virtual Machine
- Witt向量简介 §1.3:整数环Z关于p-进赋值的一种完备化结果
- android自定义分组控件,很值得收藏的安卓开源控件库
- 如何形象理解多方安全计算可实现去中心化
- 双12来临,解密淘宝小二都在用的“电商神器”——阿里云RPA(机器人流程自动化)
- Java代码实现多线程卖票
- 推荐一款聚合阅读软件: 阅读 3.0