【MATLAB GUI】 2. 设计一个闹铃/定时器(静态文本、可编辑文本、普通按钮、复选框)

news2024/11/23 10:16:45

看B站up主freexyn的freexyn编程实例视频教程系列36Matlab GUI的学习笔记

任务要求该闹铃/定时器可以设定时间、选择是否播放音乐

  1. 设计界面,使用了静态文本、可编辑文本、普通按钮、复选框

    在这里插入图片描述

  2. 修改属性string,保存为alarm.fig

    在这里插入图片描述

  3. 在设定时间右边的可编辑文本框中,运行时应该显示出当前的系统时间。设定时间时,在此基础上进行简单修改即可。

    1. 可编辑文本框的显示涉及string属性,但是不能在这个属性上写回调函数,因为他会处理成字符串原样输出在可编辑文本框中

    2. 此处涉及CreateFcn函数:在这个界面生成这个控件的时候运行该函数

      function edit1_CreateFcn(hObject, eventdata, handles)
      %now是当前的系统时间,强制转换为datestr时间字符型,使用的是第31种时间格式
      set(hObject,'string',datestr(now,31));
      
      if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
          set(hObject,'BackgroundColor','white');
      end
      
  4. 添加“定时”按钮的回调函数

    function pushbutton2_Callback(hObject, eventdata, handles)
    %datenum()将日期和时间转换为日期序列值,方便比较大小
    set_time=datenum(get(handles.edit1,'string'));
    %不断地获取当前时间和设定时间进行比较,当系统时间和设定时间一致时,退出循环并弹出提醒窗口
    while 1
        now_time=datenum(now);
        if set_time==now_time
            break;
        end
    end
    %helpdlg(msg)自定义消息文本,创建对话框
    helpdlg('时间到了');
    
  5. “播放音乐”复选框和“添加音乐”按钮

    function checkbox1_Callback(hObject, eventdata, handles)
    v=get(hObject,'value');%value值代表是否勾选
    if v==1 %勾选
        set(handles.pushbutton1,'enable','on');%“添加音乐”按钮可用
    else
        set(handles.pushbutton1,'enable','off');%“添加音乐”按钮不可用
    end
    

    但是目前初始化界面中,“播放音乐”默认未勾选,“添加音乐”按钮默认可用,会造成冲突

    修改界面初始化函数alarm_OpeningFcn():

    function alarm_OpeningFcn(hObject, eventdata, handles, varargin)
    % This function has no output args, see OutputFcn.
    % hObject    handle to figure
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    % varargin   command line arguments to alarm (see VARARGIN)
    
    % Choose default command line output for alarm
    handles.output = hObject;
    
    **%添加该行代码,默认“添加音乐”按钮不可用
    set(handles.pushbutton1,'enable','off');**
    
    % Update handles structure
    guidata(hObject, handles);
    
    % UIWAIT makes alarm wait for user response (see UIRESUME)
    % uiwait(handles.figure1);
    
  6. “添加音乐”按钮的回调函数:希望点击后跳出一个文件选择窗口,选择音乐文件

    function pushbutton1_Callback(hObject, eventdata, handles)
    [file_name,file_path]=uigetfile('*.mp3');
    set(hObject,'string',file_name);
    %userdata属性可储存控件的任何大小和类型的数据
    %fullfile()可以将多个字符串拼接成文件路径
    set(hObject,'userdata',fullfile(file_path,file_name));
    

    然后把播放音乐的功能放到“定时”按钮中来,直接在“定时”按钮的回调函数添加

    function pushbutton2_Callback(hObject, eventdata, handles)
    %datenum()将日期和时间转换为日期序列值,方便比较大小
    set_time=datenum(get(handles.edit1,'string'));
    %不断地获取当前时间和设定时间进行比较
    while 1
        now_time=datenum(now);
        if set_time==now_time
            break;
        end
    end
    %helpdlg(msg)自定义消息文本,创建对话框
    helpdlg('时间到了');
    
    %添加以下
    v=get(handles.checkbox1,'value');%value值代表是否勾选
    if v==1 %勾选
        music=get(handles.pushbutton1,'userdata');%读取“添加音乐”按钮的音乐文件
        dos(music);%打开音乐( dos(command) 调用操作系统以执行指定的命令 )
    end%没有勾选就不执行
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1457836.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WPF中样式

WPF中样式&#xff1a;类似于winform中控件的属性 <Grid><!-- Button属性 字体大小 字体颜色 内容 控件宽 高 --><Button FontSize"20" Foreground"Blue" Content"Hello" Width"100" Height"40"/></G…

网络安全综合实验

1.实验拓扑 在这里注意因为第四个要求配置双击热备&#xff0c;我们可以第一时间配置&#xff0c;避免二次重复配置消耗时间 4、FW1和FW3组成主备模式的双机热备 具体配置位置在系统-->高可靠性-->双机热备-->配置 这里上行链路有两组&#xff0c;分别为电信和移动&…

零基础入门金融风控-贷款违约预测Task2 数据分析

Task2 数据分析 此部分为零基础入门金融风控的 Task2 数据分析部分&#xff0c;带你来了解数据&#xff0c;熟悉数据&#xff0c;为后续的特征工程做准备&#xff0c;欢迎大家后续多多交流。 赛题&#xff1a;零基础入门数据挖掘 - 零基础入门金融风控之贷款违约 目的&#…

网站管理新利器:免费在线生成 robots.txt 文件!

&#x1f916; 探索网站管理新利器&#xff1a;免费在线生成 robots.txt 文件&#xff01; 你是否曾为搜索引擎爬虫而烦恼&#xff1f;现在&#xff0c;我们推出全新的在线 robots.txt 文件生成工具&#xff0c;让你轻松管理网站爬虫访问权限&#xff0c;提升网站的可搜索性和…

TLS、运输层安全协议

目录 运输层安全协议 1 协议 TLS 的要点 1.1 协议 TLS 的位置 1.2 TLS 与应用层协议独立无关 1.3 协议 TLS 具有双向鉴别的功能 1.4 TLS 建立安全会话的工作原理 TLS 的握手阶段 TLS 的会话阶段 1.5 TLS 传送的记录格式 2 协议 TLS 必须包含的措施 运输层安全协议 现…

Eclipse - Makefile generation

Eclipse - Makefile generation References right mouse click on the project -> Properties -> C/C Build -> Generate Makefiles automatically 默认会在 Debug 目录下创建 Makefile 文件。 References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

反射 动态代理

目录 一、什么是反射&#xff1f; 二、获取class对象的三种方式​编辑 1、Class.forName("全类名")&#xff1b; 2、类名.class 3、对象.getClass()&#xff1b; 4、代码实现 三、反射获取 1、利用反射获取构造方法 ①、示例代码&#xff1a;​编辑 ②、获…

SICTF round#3 web

1.100&#xff05;_upload url可以进行文件包含&#xff0c;但是flag被过滤 看一下源码 <?phpif(isset($_FILES[upfile])){$uploaddir uploads/;$uploadfile $uploaddir . basename($_FILES[upfile][name]);$ext pathinfo($_FILES[upfile][name],PATHINFO_EXTENSION);$t…

vue的十大面试题详情

1 v-show与v-if区别 v-if与v-show可以根据条件的结果,来决定是否显示指定内容&#xff1a; v-if: 条件不满足时, 元素不会存在. v-show: 条件不满足时, 元素不会显示(但仍然存在). <div id"app"><button click"show !show">点我</but…

vue3+ant design 4.x版本遇见message不显示问题。

自己打断点到success&#xff0c;但是就是没有全局显示。 第一看自己的全局引入是否有问题&#xff1a; import { createApp } from vue; import ./style.css; import App from ./App.vue; import Antd from ant-design-vue; import ant-design-vue/dist/reset.css; import ro…

K8s进阶之路-命名空间级-服务发现 :

服务发现&#xff1a; Service&#xff08;东西流量&#xff09;&#xff1a;集群内网络通信、负载均衡&#xff08;四层负载&#xff09;内部跨节点&#xff0c;节点与节点之间的通信&#xff0c;以及pod与pod之间的通信&#xff0c;用Service暴露端口即可实现 Ingress&#…

Top 8 免费 iOS 系统恢复软件榜单

智能手机彻底改变了我们在日常生活中执行任务的方式。这种紧凑的设备结合了移动电话和计算功能。这些移动设备具有出色的功能&#xff0c;例如更强大的硬件潜力和广泛的移动操作流程。此外&#xff0c;无线连接和互联网连接的发展使得这种袖珍设备在全球范围内受到需求。iPhone…

【动态规划专栏】专题一:斐波那契数列模型--------1.第N个泰波那契数

本专栏内容为&#xff1a;算法学习专栏&#xff0c;分为优选算法专栏&#xff0c;贪心算法专栏&#xff0c;动态规划专栏以及递归&#xff0c;搜索与回溯算法专栏四部分。 通过本专栏的深入学习&#xff0c;你可以了解并掌握算法。 &#x1f493;博主csdn个人主页&#xff1a;小…

※【回溯】【深度优先前序】Leetcode 257. 二叉树的所有路径

※【回溯】【深度优先前序】Leetcode 257. 二叉树的所有路径 解法0 迭代法解法1 深度优先 前序解法2 深度优先 前序 添加了StringBulider ---------------&#x1f388;&#x1f388;257. 二叉树的所有路径 题目链接&#x1f388;&#x1f388;------------------- 解法0 迭代法…

从零开始学逆向:理解ret2libc-3

1.题目信息 题目下载链接&#xff1a;https://pan.baidu.com/s/1wk3JFQBHgVZ0vjfnQk60Ug 提取码&#xff1a;0000 2.解题分析 相对于前面两道例题难度加大了不少&#xff0c;程序中既没有system函数的地址&#xff0c;也没有/bin/sh字符串&#xff0c;我们需要使用libc中的s…

Aspose.Words For JAVA 动态制作多维度表格(涵2024最新无水印包)

全网最全Aspose.Words For JAVA 高级使用教程: CSDNhttps://mp.csdn.net/mp_blog/creation/editor/133989664?spm1000.2115.3001.5352 运行截图&#xff1a; 所谓多维度表格通常包含多个维度, 每个维度都代表一种数据属性,多维度表格可以用于数据分析&#xff0c;通过不同的维…

(十四)devops持续集成开发——jenkins流水线使用pipeline方式发布项目

前言 本节内容我们使用另外一种方式pipeline实现项目的流水线部署发布&#xff0c;Jenkins Pipeline是一种允许以代码方式定义持续集成和持续交付流水线的工具。通过Jenkins Pipeline&#xff0c;可以将整个项目的构建、测试和部署过程以脚本的形式写入Jenkinsfile中&#xff…

给label-studio 配置sam(segment anything)ml 记录

给label-studio 配置sam&#xff08;segment anything&#xff09;ml 后端记录 配置ml后台下载代码下载模型文件创建环境模型转换后端服务启动 配置label-studio 前端配置模型后端连接配置标注模板标注界面使用 参考链接 配置ml后台 下载代码 git clone https://github.com/H…

qt for python创建UI界面

现在很多库都有用到python,又想使用QT creater创作界面&#xff0c;来使用。 1.使用的版本 使用虚拟机安装Ubuntu22.04&#xff0c;Ubuntu使用命令行安装qt,默认安装的是QT5&#xff0c;不用来回调了&#xff0c;就用系统默认的吧&#xff0c;不然安装工具都要费不少事情。pyt…

展示用HTML编写的个人简历信息

展示用HTML编写的个人简历信息 相关代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document…