Как задержать цикл без влияния на GUI

Я работаю в MATLAB с GUI. И у меня есть for цикл и графический интерфейс с 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 цикл, текст пользовательского интерфейса не обновляется. А по окончании отобразится 10 в тексте пользовательского интерфейса. Я хочу, чтобы он отображал каждый шаг от 1 до 10. Я действительно ценю вашу помощь. Заранее спасибо.

1 ответ

Попробуйте использовать drawnow команда. Таким образом вы заставляете MATLAB перерисовывать графические элементы. Я не уверен, где разместить эту функцию в вашем коде, но я бы посоветовал вам сначала попытаться поместить ее как последнюю команду в оба цикла, а затем выяснить, где ее важно сохранить.

Некоторое время назад я делал нечто подобное с двумя циклами, одним внутри GUI, а другим в MATLAB-скрипте. Единственный способ запустить оба цикла без блокировки - использовать drawnow,

Другие вопросы по тегам