如何在循环之间延迟无效GUI



我正在用GUI在Matlab工作。我有一个for循环和GUI,带有while循环在全球范围内,我需要延迟约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的每个步骤。非常感谢您的帮助。预先感谢您。

尝试使用drawnow命令。这样,您将MATLAB迫使重新绘制图形元素。我不确定将此功能放入您的代码中,但我建议您首先将其作为最后一个命令将其作为循环,然后您可以弄清楚它的重要位置。

我前一段时间做了类似的事情,其中有2个循环,一个内部的GUI和一个在MATLAB字样中。同时使用drawnow同时运行两个循环的唯一方法。

相关内容

  • 没有找到相关文章

最新更新