【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 代码能实现什么丧心病狂的功能?圣诞树源代码
开发语言·python·程序员·编程·python教程·python学习·python教学
优雅的小武先生16 分钟前
QT中的按钮控件和comboBox控件和spinBox控件无法点击的bug
开发语言·qt·bug
虽千万人 吾往矣22 分钟前
golang gorm
开发语言·数据库·后端·tcp/ip·golang
创作小达人24 分钟前
家政服务|基于springBoot的家政服务平台设计与实现(附项目源码+论文+数据库)
开发语言·python
不想当个技术宅25 分钟前
【梯级水电站调度优化】基于自适应权值优化粒子群算法
matlab·粒子群算法·梯级水电站调度优化
郭二哈27 分钟前
C++——list
开发语言·c++·list
杨荧28 分钟前
【JAVA开源】基于Vue和SpringBoot的洗衣店订单管理系统
java·开发语言·vue.js·spring boot·spring cloud·开源
ZPC821035 分钟前
Python使用matplotlib绘制图形大全(曲线图、条形图、饼图等)
开发语言·python·matplotlib
镜花照无眠36 分钟前
Python爬虫使用实例-mdrama
开发语言·爬虫·python
aaasssdddd961 小时前
python和c
c语言·开发语言·python