Matlab: добавить динамически обновляемый индикатор в окне GUI - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь добавить динамический индикатор в графическом интерфейсе.Отмечу, что есть несколько доступных решений ( Как добавить индикатор выполнения в Matlab GUI? ).Мой метод основан на создании двух панелей разных цветов, одна для фона, а другая для переднего плана (т. Е. Индикатор выполнения).Мои коды следующие:

bar = uipanel('Parent',handles.bgProgressBar,'BackgroundColor','r');
%Note: bgPogressBar is the tag of a panel manually added with GUIDE
barPosition = get(bar,'Position');
cnt = 0
for ii = 1:S
   for jj = 1:T

       do something 
       ….

       cnt = cnt + 1;
       progress = cnt/(S*T);
       barPosition(3) = progress;
       barPosition;
       set(bar,'Position',barPosition);   
   end
end

Проблема здесь в том, что панель не обновляется в реальном времени.Он не отвечает, а только прогрессирует до конца, когда цикл завершен.Можно ли добавить динамически прогрессирующую панель в графическом интерфейсе?

1 Ответ

0 голосов
/ 14 декабря 2018

Используйте drawnow после set для немедленного обновления графического объекта на экране:

bar = uipanel('Parent',handles.bgProgressBar,'BackgroundColor','r');
%Note: bgPogressBar is the tag of a panel manually added with GUIDE
barPosition = get(bar,'Position');
cnt = 0
for ii = 1:S
   for jj = 1:T

       do something 
       ….

       cnt = cnt + 1;
       progress = cnt/(S*T);
       barPosition(3) = progress;
       barPosition;
       set(bar,'Position',barPosition);   
       drawnow %%%%%
   end
end
...