waitbar cancel doesn't work

2 次查看(过去 30 天)
Pelajar UM
Pelajar UM 2022-3-25
评论: Rik 2022-3-25
First of all it seems that this is common issue. I read all the topics I could find on the forum here, but there was no clear answer.
Adding drawnow didn't work.
And, Yes, the function is interruptible.
f = waitbar(0,'Loading','Name','Exporting...',...
'CreateCancelBtn','setappdata(gcbf,''canceling'',0)');
for k = 1:16
if getappdata(f,'canceling') == 1
break
end
figure('Visible', 'off');
ExpFig = trisurf(F,P(:,1),P(:,2),P(:,3),app.UITable4.Data(:,k));
exportgraphics(gcf, string(file) ,"BackgroundColor","none","ContentType","vector","Append",true);
close;
waitbar(k/16, f, sprintf('Export Progress: %d %%', floor (k/16*100)));
pause(0.1);
drawnow();
end
delete (f);
msgbox('Export Completed!');

采纳的回答

Rik
Rik 2022-3-25
You forgot to set the value first and you reversed 0 and 1:
f = waitbar(0,'Loading','Name','Exporting...',...
'CreateCancelBtn','setappdata(gcbf,''canceling'',1)');
setappdata(f,'canceling',0);
for k = 1:16
if getappdata(f,'canceling')
break
end
figure('Visible', 'off');
ExpFig = trisurf(F,P(:,1),P(:,2),P(:,3),app.UITable4.Data(:,k));
exportgraphics(gcf, string(file) ,"BackgroundColor","none","ContentType","vector","Append",true);
close;
waitbar(k/16, f, sprintf('Export Progress: %d %%', floor (k/16*100)));
pause(0.1);
drawnow();
end
delete (f);
msgbox('Export Completed!');
  6 个评论
Pelajar UM
Pelajar UM 2022-3-25
While the answer from VBBV works, it seems like you cannot get rid of uifigure. Your last comment did the job. So the accepted answer goes to you! :)

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Dialog Boxes 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by