0

我在带有 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 文本没有更新。完成后,它将显示10在 UI 文本中。我希望它会显示从 1 到 10 的每一步。非常感谢您的帮助。先感谢您。

4

1 回答 1

0

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

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

于 2019-02-27T08:51:15.303 回答