Как задержать цикл без влияния на 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
,