【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%没有勾选就不执行
相关推荐
闲人编程5 分钟前
Python第三方库IPFS-API使用详解:构建去中心化应用的完整指南
开发语言·python·去中心化·内存·寻址·存储·ipfs
CTRA王大大1 小时前
【golang】制作linux环境+golang的Dockerfile | 如何下载golang镜像源
linux·开发语言·docker·golang
2501_915106322 小时前
iOS混淆工具实战 金融支付类 App 的安全防护与合规落地
android·ios·小程序·https·uni-app·iphone·webview
zhangfeng11332 小时前
以下是基于图论的归一化切割(Normalized Cut)图像分割工具的完整实现,结合Tkinter界面设计及Python代码示
开发语言·python·图论
还梦呦3 小时前
2025年09月计算机二级Java选择题每日一练——第五期
java·开发语言·计算机二级
alexhilton3 小时前
运行时着色器实战:实现元球(Metaballs)动效
android·kotlin·android jetpack
鱼鱼说测试4 小时前
postman接口自动化测试
开发语言·lua
從南走到北4 小时前
JAVA国际版东郊到家同城按摩服务美容美发私教到店服务系统源码支持Android+IOS+H5
android·java·开发语言·ios·微信·微信小程序·小程序
凌晨7点4 小时前
控制建模matlab练习14:线性状态反馈控制器-③极点配置
matlab
_不会dp不改名_4 小时前
C++ 20: Concepts 与Requires
开发语言·c++20