使用MatlabGUI中的文本字段作为计时器
我有一个简单的GUI,我想使用一个文本字段来显示循环中生成的不断变化的值。我只是不知道如何让它工作。从帮助文件和一些论坛帖子中,我有以下内容: 首先,我创建文本对象:使用MatlabGUI中的文本字段作为计时器,matlab,user-interface,text,matlab-figure,Matlab,User Interface,Text,Matlab Figure,我有一个简单的GUI,我想使用一个文本字段来显示循环中生成的不断变化的值。我只是不知道如何让它工作。从帮助文件和一些论坛帖子中,我有以下内容: 首先,我创建文本对象: hTimer = uicontrol('Style','text','String','Time',... 'Position',[450,300,60,15],... 'Callback',@Timer_CreateFcn); 我创建了一些函数: function Timer_Cr
hTimer = uicontrol('Style','text','String','Time',...
'Position',[450,300,60,15],...
'Callback',@Timer_CreateFcn);
我创建了一些函数:
function Timer_CreateFcn(hObject, eventdata, handles)
global statText
statText = hObject;
end
然后我有一个循环,其中生成值:
while ...
textString=['TestCycleTime = ',num2str(datestr(tsNum(idx-5)-tsNumDoor(1),'MM:SS.FFF')),' [Min:Sec]'];
global statText;
set(statText, 'String', textString);
end
脚本正在运行,没有错误,但计时器仍没有更新。
有人能给我一个提示吗?问题是,您正在
循环中更新文本对象的'String'
属性,而循环阻止MATLAB自动花时间实际渲染更改。要改变此行为,可以在设置后显式调用'String'
属性以显式呈现当前地物
set(hTimer, 'String', textString);
drawnow
作为旁注,我建议您研究在应用程序中传递数据的方法,而不是使用全局变量。为什么不更新到有指南的较新版本的MATLAB?这是您必须问我的老板的一件事……绝对不需要指南。您的问题是计时器管理(该指南没有帮助)。计时器应在GUI定义中自行初始化,而不是在文本
uicontrol回调中初始化。计时器回调(可通过TimerFcn
属性访问)应该是更新文本框的回调。