Waitbar在水平步骤,matlab

时间:2011-05-25 15:05:36

标签: matlab

我正在尝试修改此代码

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

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

如何将waitbar分成10个步骤。我的意思是它应该看起来像

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

4 个答案:

答案 0 :(得分:5)

以下代码允许您向waitbar添加垂直线:

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上可以找到很多替代方案,所以如果内置函数没有为ya做,我肯定会检查出来。 ;)

答案 1 :(得分:2)

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

答案 2 :(得分:1)

我不确定如何向等待栏本身添加步骤,但您可以添加一条动态消息,该消息会更改以显示计算完成的程度:

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);

答案 3 :(得分:0)

由于waitbar是一个灵活性较低的内置函数,我认为没有简单的方法可以让waitbar看起来像你想要的那样。如果它真的很重要,你可以在几个进度模式中绘制一个等待栏并将其保存为图片。然后你可以在一个看起来像等候栏的简单gui中加载图片! ;)