1.问题表述
近日,我在做一些 MATLAB app 时在某个回调函数中,需要完成一些耗时的读取文件任务,在读取文件的代码前面,我关闭了其他所有组件的工作状态(按钮变暗),在读取结束后又打开组件的工作状态。但是我发现在运行时,回调函数执行结束前是不会更新组件工作状态,直到回调结束时才会更新,但是此时更新已经没有必要,那这样的问题该如何解决呢?
2.问题解决
最简单的办法就是直接在更改组件工作状态属性的代码后加上:drawnow;目的是更新组件状态
还有一种办法是给回调函数中耗时的任务加上一个进度条:waitbar,也可以达到更新组件显示状态。
f = waitbar(x,msg) 创建一个非模态对话框,其中包含一个带有指定消息的等待条。等待条具有小数形式的长度 x
waitbar(x,f) 将等待条对话框 f 中的等待条长度更新到新位置 x。
具体 waitbar 使用方法,查看 mathworks 官方帮助文档:waibar 用法