Панель ожидания в горизонтальных шагах, Matlab - PullRequest
3 голосов
/ 25 мая 2011

Я пытаюсь изменить этот код

h = waitbar(0,'Please wait...');

for i=1:10, % computation here %  waitbar(i/10) end
close(h)

Как разделить панель ожидания на 10 шагов. Я имею в виду это должно выглядеть как

-------------------
| | | | | | | | | |
-------------------

Ответы [ 4 ]

5 голосов
/ 25 мая 2011

Следующий код позволит вам добавить вертикальные линии в панель ожидания :

hWait = waitbar(0,'Progress');  %# Create the waitbar and return its handle
hAxes = get(hWait,'Children');  %# Get the axes object of the waitbar figure
xLimit = get(hAxes,'XLim');     %# Get the x-axis limits
yLimit = get(hAxes,'YLim');     %# Get the y-axis limits
xData = repmat(linspace(xLimit(1),xLimit(2),11),2,1);  %# X data for lines
yData = repmat(yLimit(:),1,11);                        %# Y data for lines
hLine = line(xData,yData,'Parent',hAxes,...  %# Plot the lines on the axes...
             'Color','k',...                 %#   ... in black...
             'HandleVisibility','off');      %#   ... and hide the handles

После запуска приведенного выше кода и выполнения waitbar(0.35,hWait); вы увидите фигуру, подобную этой:

enter image description here

ПРИМЕЧАНИЕ: Черные линии на графике (обе добавленные мной вертикальные линии и уже существующее поле вокруг индикатора выполнения) будут периодически появляться над или под красным индикатором выполнения. когда он обновится. Это похоже на существующую ошибку с поведением WAITBAR , и мне еще предстоит найти способ ее исправить. Однако на MathWorks File Exchange существует довольно много альтернатив, поэтому я обязательно их проверю, если встроенная функция этого не делает для вас. ;)

2 голосов
/ 25 мая 2011

Yo может перезапустить с нуля в любое время и обновить сообщение. Например:

h = waitbar(0, 'Please wait...');
for step=1:10
    waitbar(0, h, ['Step ' num2str(step) '/10 - Please wait...']);
    for i=1:100
        % Work...
        waitbar(i/100, h);
    end
end
1 голос
/ 25 мая 2011

Я не уверен, как добавить шаги в саму панель ожидания, но вы можете добавить динамическое сообщение, которое изменится, чтобы показать, сколько вычислений завершено:

h = waitbar(0,'Please wait...0% complete');
for i = 1:10
    % Computation here
    waitbar(i/10, h, sprintf('Please wait...%d%% complete',100*(i/10)));
end
close(h);
0 голосов
/ 25 мая 2011

Поскольку waitbar является встроенной функцией с низкой гибкостью, я думаю, что не существует простого способа сделать панель ожидания такой, какой вы хотите.Если это действительно имеет значение, вы можете нарисовать панель ожидания в нескольких режимах выполнения и сохранить ее как изображение.тогда вы можете загрузить фотографии в простой графический интерфейс, который выглядит как панель ожидания!;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...