MATLAB GUI给进度条添加取消按钮来中途结束程序

编写程序遇到的问题,中途关闭进度条会报错,加入这个取消代码就好了

%第一种  
hWaitBar = waitbar(0, '请等待...', 'Name', '进度条', 'CreateCancelBtn' ,'setappdata(gcbf, ''isCanceled'', true)');
hCancelButton = findall(hWaitBar, 'style', 'pushbutton');
set(hCancelButton, 'string', '取消', 'fontsize', 8);
setappdata(hWaitBar, 'isCanceled', false);
for i = 1 : 100
    waitbar(i / 100, hWaitBar, ['更新' num2str(i) '%']);
    pause(0.1);   
    if getappdata(hWaitBar, 'isCanceled')
        return;
    end
end
pause(0.1);
delete(hWaitBar);
   
%第二种   
isCanceled = false;%表征是否按下了取消按钮
hWaitbar=waitbar(0,'请等待…','Name','进度条','CreateCancelBtn',@Cancelcallback);%创建进度为0的进度条
btnCancel=findall(hWaitbar,'style','pushbutton');%查找取消按钮
set(btnCancel,'string','取消','fontsize',10);
for i=1:100
waitbar(i/100,hWaitbar,['进度完成',num2str(i),'%']);
pause(0.1)
     if isCanceled%如果按下了取消按钮,跳出循环
         return;
     end
end

if  ishandle(hWaitbar)
    delete(hWaitbar)
    clear hWaitbar
end

    function Cancelcallback(~,~)
        isCanceled = true;
    end
end

机构
结果图
参考原文:https://www.ilovematlab.cn/thread-244814-1-1.html

猜你喜欢

转载自blog.csdn.net/qq_46877697/article/details/110383450
今日推荐