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

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

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

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

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

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

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

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

      matlab 复制代码
      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. 添加"定时"按钮的回调函数

    matlab 复制代码
    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. "播放音乐"复选框和"添加音乐"按钮

    matlab 复制代码
    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():

    matlab 复制代码
    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. "添加音乐"按钮的回调函数:希望点击后跳出一个文件选择窗口,选择音乐文件

    matlab 复制代码
    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));

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

    matlab 复制代码
    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%没有勾选就不执行
相关推荐
A133455535 分钟前
Apple TV 软件推荐:全平台怎么选
android·音频
承渊政道1 小时前
【Python编程—从入门到实践】(Python条件判断完全入门:从布尔表达式到列表中的if实战)
开发语言·python·pycharm·条件判断·布尔表达式
小灰灰搞电子1 小时前
Rust 相关容器(集合)详解
开发语言·容器·rust
萧瑟余晖5 小时前
Java深入解析篇三十三之密封类与接口(Sealed Classes)详解
java·开发语言
论迹复利8 小时前
FreeRTOS 在 RISC-V 上是如何“点火“的 —— 从 main() 到第一个任务的完整链路
java·开发语言·risc-v
张宇Joaquin9 小时前
鲲鹏统一并行加速库KUPL--众核并行能力介绍
java·开发语言·网络
736c9 小时前
C语言-数组 07
c语言·开发语言
宸津-代码粉碎机9 小时前
AI攻防战升级!基于Spring AI构建Java应用自动免疫安全体系
java·大数据·开发语言·人工智能·python·安全·spring
Evand J10 小时前
【MATLAB代码,车联网8】MPC网联车辆节能跟驰控制:速度跟踪、间距约束与能耗优化。MATLAB完整代码订阅专栏后可直接查看
matlab·代码·车联网·mpc·车辆·网联·网联技术
LorryJovens11 小时前
【LAAP科研】CEN因果等价网络理论---从双缝干涉到因果等价
开发语言·php