目录

1.回调函数创建步骤

1)命令窗口中输入guide,创建一个新的GUI界面窗口

2)从左侧的组件栏选择需要的组件进行布局

3)选中一个组件,双击进行组件的属性设置(Tag、String)

4)设置好属性后,对需要执行回调函数的组件进行回调函数的设置,右键单击组件,进入回调函数编辑

问题提出?

2.常见疑问解答hObject, eventdata, handles等

1)回调函数中的hObject, eventdata, handles是什么意思?

2)组件之间是通过什么进行联系(handles),又是通过什么进行区别的(Tag)?

3)怎么调用其他组件中的数据?

4)怎么对组件设置指定的文本?

5)组件之间的数据是怎么进行共享的?

3.相关链接供参考


1.回调函数创建步骤

这里以一个四则运算为例进行说明,实现的功能是,在输入数据后,按下相应的按钮,会进行计算并且将结果呈现在相应的组件上

1)命令窗口中输入guide,创建一个新的GUI界面窗口

2)从左侧的组件栏选择需要的组件进行布局

3)选中一个组件,双击进行组件的属性设置(Tag、String)

4)设置好属性后,对需要执行回调函数的组件进行回调函数的设置,右键单击组件,进入回调函数编辑

% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
set(handles.text6,'String',"+");
str1 = get(handles.edit1,'String'); % 获得文本框的文本内容,此时为字符串类型
num1 = str2double(str1);% 将获得的字符串转换成数字类型
str2 = get(handles.edit2,'String'); % 获得文本框的文本内容,此时为字符串类型
num2 = str2double(str2);% 将获得的字符串转换成数字类型
res = num1 + num2;
set(handles.edit3,'String',res);

问题提出?

是不是看到这里会很多疑问,比如:

1)回调函数中的hObject, eventdata, handles是什么意思?

2)组件之间是通过什么进行联系,又是通过什么进行区别的?

3)怎么调用其他组件中的数据?

4)组件之间的数据是怎么进行共享的?

5)怎么对组件设置指定的文本?

当时我也有疑问,在一个帖子上看到了相关的回答,自己做了一些补充,大家可以看一下

2.常见疑问解答hObject, eventdata, handles等

1)回调函数中的hObject, eventdata, handles是什么意思?

答:

参考链接:https://blog.csdn.net/smf0504/article/details/51832374?_t_t_t=0.11396357929334044

***hObject是当前回调函数对应的GUI对象的句柄;
***eventdata为未定义的保留参数,即当前控件的相关变量;
***handles是当前GUI所有数据的结构体,包含所有GUI对象的句柄和用户定义的数据;
***varargin在初始化时是空的,在触发控件时,变成一个1X4的单元数组;
第一个varargin{1}表示触发控件后所要执行的回调函数的函数名。
如果想把一个局部变量变成全局变量,一个有效的方法是将变量存在handles中,获取handles结构体某个变量值的方法是x=handles.a。

2)组件之间是通过什么进行联系(handles),又是通过什么进行区别的(Tag)?

答:

联系——在同一个GUI内的所有数据都有一个共同的结构体,即handles,这个结构体在创建了gui保存后会自动进行创建,含有所有组件对象的句柄以及相应的数据,而组件也是通过这个联系在一起的,使得所有在同一个gui的组件具有共同的结构体,不会和其他的gui的组件混淆在一起;

区别——在同一个handles下的每一个组件都有自己的属性,而在属性中有一个属性是标签名Tag,这是每一个组件独一无二的名字,因此组件之间是通过标签来进行区分彼此的;

作用——handles.标签名,可以用于对指定标签的属性进行设置。

3)怎么调用其他组件中的数据?

答:

通过以下代码进行组件文本的提取,提取到的是一个字符串类型

get(handles.组件的标签名,"要设置的组件的属性")示例:
str1 = get(handles.edit1,'String')%返回字符串类型

如果文本是数字组成的字符串,要想获得数据类型,则需要使用到str2double()函数

num1 = str2double(str1)%得到一个双精度浮点数

4)怎么对组件设置指定的文本?

答:

通过以下代码进行组件文本的设置

set(handles.组件的标签名,"要设置的组件的属性名","要设置的内容")示例:
set(handles.text6,'String',"+")

5)组件之间的数据是怎么进行共享的?

答:

同一个gui中组件的属性和数据都会保存在handles结构体中,在回调函数下,对相应组件的文本进行提取,即可对其进行操作,

如本例中,按下加号按钮,对两个数进行加法计算,加法计算前,得先获取编辑文本中的文本内容,在按下按钮后进行加法操作

3.相关链接供参考

https://blog.csdn.net/smf0504/article/details/51832374?_t_t_t=0.11396357929334044

https://jingyan.baidu.com/article/363872ec0c7ae96e4ba16f00.html

https://blog.csdn.net/persistlzy/article/details/53309467

https://wenku.baidu.com/view/5fefde1076eeaeaad1f330d0.html

MAATLAB GUI——回调函数的设置(Callbacks)相关推荐

  1. python callback函数_回调函数callbacks

    TensorFlow的中阶API主要包括: 数据管道(tf.data) 特征列(tf.feature_column) 激活函数(tf.nn) 模型层(tf.keras.layers) 损失函数(tf. ...

  2. 【第3版emWin教程】第55章 emWin6.x按钮Button控件自定义回调函数,实现各种按钮效果

    教程不断更新中:链接 第55章       emWin6.x按钮Button控件自定义回调函数,实现各种按钮效果 本章节为大家讲解按钮控件自定义回调函数,通过其回调函数就可以实现各种按钮效果.这方面的 ...

  3. Python Opencv 实现鼠标事件(包含一个练习)——事件触发讲解·以及鼠标回调函数的实现

    文章目录 鼠标事件概述 鼠标事件发生的结构 鼠标回调函数的标准格式 opencv下包含的所有事件--包含flag和event(可以看一下,熟悉常见事件范围) 鼠标事件的实现函数 一个完整的鼠标事件由一 ...

  4. 十一、【TF2】Callback 回调函数

    TF2 Callback 一.回调函数简介 二.TF2中的内置回调函数 1- tf.keras.callbacks.BaseLogger 基础日志 2- tf.keras.callbacks.Hist ...

  5. Keras的回调函数

    训练模型时,很多事情一开始无法预测.尤其是你不知道需要多少轮次才能得到最佳验证损失.通常简单的办法是:训练足够多的轮次,这时模型已经开始过拟合了,根据第一次运行来确定训练所需要的正确轮次,然后使用这个 ...

  6. 爬虫技术(05)神箭手爬虫回调函数

    回调函数是在神箭手应用爬取并处理网页的过程中设置的一些系统钩子, 通过这些钩子可以完成一些特殊的处理逻辑. 回调函数需要设置到configs对象中才起作用 下图是采集爬虫爬取并处理网页的流程图, 矩形 ...

  7. python gui button回调函数运行完成后弹出窗口_嵌入式设备GUI开发之GTK+入门(一)...

    小伙伴们大家好,最近鑫哥带领大家做了很多的C语言的小项目,那有些小伙伴说我们可以用python做图形界面,我们可以使用C语言做吗? 我的回答是当然没问题嘻嘻,接下来鑫哥就带大家一起去看看如何进行GTK ...

  8. 【Android FFMPEG 开发】OpenSLES 播放音频 ( 创建引擎 | 输出混音设置 | 配置输入输出 | 创建播放器 | 获取播放/队列接口 | 回调函数 | 开始播放 | 激活回调 )

    文章目录 I . FFMPEG 播放视频流程 II . OpenSLES 播放音频流程 III . OpenSLES 播放参考 Google 官方示例 IV . OpenSL ES 播放代码 ( 详细 ...

  9. 【Android 高性能音频】AAudio 音频流 PCM 采样 的 采样 缓冲 播放 的 连续机制 ( 数据回调机制 | 数据回调函数指针 | 实现数据回调函数 | 设置数据回调函数 )

    文章目录 I . AAudio 音频流 采样 缓冲 播放 的连续机制 II . AAudio 音频流 数据回调函数 函数指针类型定义 III . AAudio 音频流 数据回调函数 实现 IV . A ...

最新文章

  1. java读取txt文件中的内容
  2. 第十六届全国大学生智能车竞赛线上赛点赛道审核 - 东北赛区(第一批次)
  3. C ++ 11引入了标准化的内存模型。这是什么意思?它将如何影响C ++编程?
  4. BZOJ3224普通平衡树
  5. 针对access数据库的增删改查
  6. 快速傅里叶变换python_FFT快速傅里叶变换的python实现过程解析
  7. string list 查找_手撕java集合源码——List篇
  8. Docker学习总结(65)—— 容器引擎 Docker 与 Podman 的详细对比分析
  9. tensorflow如何微调时如何只训练后两层_TensorFlow官方发布剪枝优化工具:参数减少80%,精度几乎不变...
  10. Flex读取txt文件里的内容报错
  11. Javascript特效:阿鲁的相册
  12. 传统形态抗锯齿 2.0
  13. 利用Openyxl为Excel批量插入表头行(Excel读写基础操作)——下
  14. Chromium源码中 media::VideoFrame 的3个属性(coded_size, visible_rect, natual_size)的理解
  15. 已解决SyntaxError:positional argument follows keyword argument
  16. 【ES6】Reflect 反射
  17. 折纸测珠峰python程序_哪个大神能帮忙用python做一下这个程序,真的万分感谢
  18. 新松机器人BG总裁高峰_新松机器人:做一个有价值的机器人企业!
  19. 图解HTTP(四)—— 返回结果的HTTP状态码
  20. [RK3568 Android11] 开发之APP应用切换USB OTG模式

热门文章

  1. 【NOIP2011 Day 2】观光公交
  2. TCP/IP(六):HTTP 与 HTTPS 简介
  3. 详解JDBC连接数据库
  4. 构建SpringBoot第一个Demo
  5. CODE[VS] 3411 洪水
  6. MySQL 数据表备份导出,恢复导入操作实践
  7. life list 2010
  8. 从今开始,好好学习一下算法!
  9. 对网络数据包进行嗅探
  10. 记一次vue 普通异步请求微信二进制二维码 乱码 问题解决然后渲染