使用MATLAB GUI中的文本字段作为计时器

时间:2017-03-30 09:33:03

标签: matlab user-interface text matlab-figure

我有一个简单的GUI,我想使用文本字段来显示循环中生成的不断变化的值。我现在不知道如何让它发挥作用。从帮助文件和一些论坛帖子我有以下内容:

首先我创建我的文本对象:

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

脚本正在运行且没有错误,但计时器仍未更新。 有人可以给我一个提示吗?

1 个答案:

答案 0 :(得分:0)

问题是您正在'String'循环中更新文本对象的while属性,这会阻止MATLAB自动花时间实际呈现更改。要更改此行为,您可以在设置'String'属性后显式调用drawnow以显式呈现当前数字。

set(hTimer, 'String', textString);
drawnow

作为旁注,我建议您研究在应用中传递数据的方法,而不是使用global变量。