文章目录
- 1.问题描述
- 2.代码设置
- 代码示例
- 解释
1.问题描述
我们在做MATLAB的时候,一般需要在APP界面中加上时间显示,像下图中的右上角,在组件中有日期选择器,但是这个并不是实时显示的,我们还需要自己进行设置。
2.代码设置
我们只需要打开代码视图界面,找到 function startupFcn(app)这个函数,
在 startupFcn
内初始化定时器
将定时器对象作为局部变量定义,并在 startupFcn
内部进行初始化和启动。同时,定义一个嵌套函数 updateDatePicker
用于更新 DatePicker
。
代码示例
function startupFcn(app)
% 创建定时器对象
updateTimer = timer('ExecutionMode', 'fixedRate', ...
'Period', 1, ...
'TimerFcn', @(~,~) updateDatePicker());
% 启动定时器
start(updateTimer);
% 嵌套函数:更新 DatePicker 的值
function updateDatePicker()
app.DatePicker.Value = datetime('now');
end
% 清理函数:停止并删除定时器
cleanupObj = onCleanup(@() stopAndDeleteTimer(updateTimer));
function stopAndDeleteTimer(t)
if isvalid(t)
stop(t);
delete(t);
end
end
end
解释
-
定时器初始化:
updateTimer = timer('ExecutionMode', 'fixedRate', ... 'Period', 1, ... 'TimerFcn', @(~,~) updateDatePicker());
-
启动定时器:
start(updateTimer);
-
嵌套函数
updateDatePicker
用于更新DatePicker
的值:function updateDatePicker() app.DatePicker.Value = datetime('now'); end
-
清理函数
stopAndDeleteTimer
用于停止并删除定时器:cleanupObj = onCleanup(@() stopAndDeleteTimer(updateTimer)); function stopAndDeleteTimer(t) if isvalid(t) stop(t); delete(t); end end
使用 onCleanup
对象,确保在 startupFcn
执行完毕时,定时器能够被正确清理。
这样就可以在 startupFcn
内完成定时器的创建、启动、更新和清理。