首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Matlab gui中添加进度条控件?

如何在Matlab gui中添加进度条控件?
EN

Stack Overflow用户
提问于 2011-03-20 21:46:44
回答 6查看 31.6K关注 0票数 18

是否有现成的进度条uicontrol可以添加到Matlab gui,uicontrol或ActiveX组件?

编辑我知道waitbar功能,我指的是可以在设计的GUI中实现的组件,而不只是弹出窗口。类似于状态栏中的电池状态。

EN

回答 6

Stack Overflow用户

发布于 2011-03-20 23:43:20

是的,有。waitbar函数就是您需要的。这里的例子很容易理解,你可以马上上手。它应该可以在所有3个平台上正常工作(Windows/OS X/Linux)。

票数 6
EN

Stack Overflow用户

发布于 2013-05-31 23:54:27

根据这条MatLab Newgroup注释改编我的代码,我能够将以下内容组合在一起:

代码语言:javascript
复制
function h = uiProgressBar(varargin)
%uiProgressBar: A waitbar that can be embedded in a GUI figure.

    if ishandle(varargin{1}) && size(varargin, 2) > 1
        ax = varargin{1};
        value = varargin{2};
        p = get(ax,'Child');
        x = get(p,'XData');
        x(3:4) = value;
        set(p,'XData',x)
        return
    end

    bg_color = 'w';
    fg_color = 'r';
    h = axes('Units','pixels',...
        'XLim',[0 1],'YLim',[0 1],...
        'XTick',[],'YTick',[],...
        'Color',bg_color,...
        'XColor',bg_color,'YColor',bg_color, ...
        'Parent', varargin{1});
    patch([0 0 0 0],[0 1 1 0],fg_color,...
        'Parent',h,...
        'EdgeColor','none',...
        'EraseMode','none');
end

创建过程如下所示,其中parent是要将其添加到的父面板:

代码语言:javascript
复制
myProgressBar = uiProgressBar(parent);

更新进度条就像这样简单:

代码语言:javascript
复制
uiProgressBar(myProgressBar, .2);

下面是一个完整的使用figure的工作示例

代码语言:javascript
复制
f = figure('Name', 'Progress Bar Example', 'Position', [100 100 800 600]);

progressBar = uiProgressBar(f);

for i = 1:10:100
    uiProgressBar(progressBar, i/100);
    pause(.5);
end

票数 4
EN

Stack Overflow用户

发布于 2013-09-06 20:28:37

另一个简单的解决方案是使用两个嵌套的uipanels,如下所示:

代码语言:javascript
复制
function MyProgressBar(handle, progress)
   % progress = 0.00001 .... 1

   % 1st panel
   p = uipanel(handle);

   % 2n panel as bar
   bar = uipanel(p);
    set(bar, 'BackgroundColor', 'red');
    x = get(bar, 'Position');
    x(3) = progress;       % Corresponds to % progress if unit = normalized
    set(bar, 'Position',x);
end

用法:

代码语言:javascript
复制
 f = figure();
 set(f,'Position',[100,100,400,40]);
 MyProgressBar(f, 0.5); % corresponds to 50% progress
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5368861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档