如何在循环之间延迟而不影响GUI

时间:2019-02-27 05:25:42

标签: matlab sleep matlab-gui

我正在使用GUI在MATLAB中工作。而且我有一个for循环和一个带有while循环的GUI,每个步骤都需要延迟大约1秒钟。但是,当我使用pause(1)时,GUI会卡住,while循环将停止工作,并且直到循环完成才更新。 这是我的代码:

count= uicontrol('Style','text',...
'String', '0',...
'Tag','Count',...
'Fontsize',12,...
'Position',[40, 350,35,35]);
i = 0;
while i < 1000
    %do something
    i++;
    disp(i);
end

这是嵌套函数中的for循环:

for m=0:1:10
    %do something
    c = findobj('Tag','Count');
    set(c, 'String', num2str(m));
    pause(1);
end

但是当我执行此for循环时,UI文本不会更新。完成后,它将在UI文本中显示10。我希望它显示从1到10的每个步骤。 非常感谢您的帮助。预先谢谢你。

1 个答案:

答案 0 :(得分:-1)

尝试使用drawnow命令。这样,您可以强制MATLAB重新绘制图形元素。我不确定将该函数放在代码中的哪个位置,但是我建议您首先尝试将其作为最后一个命令放入两个循环中,然后再找出保留在哪个位置的重要性。

前段时间我做了类似的事情,有2个循环,一个在GUI中,一个在MATLAB脚本中。使两个循环同时运行而不阻塞的唯一方法是使用drawnow