首页 > 解决方案 > Matlab服务员“取消”按钮不会响应

问题描述

我使用内置的 Matlab等待栏功能,还使用内置的“CreateCancelBtn”选项,它添加了一个取消按钮(这样我就可以取消一个 for 循环)。

问题是,当我按下“取消”按钮时,什么也没有发生,但如果我按下“X”按钮,该过程将被取消(根据 Matlab,“X”按钮被定义为像“取消”按钮)。

另一个事实:只有当我从我的项目(GUIDE UI)运行函数(见下文)时才会出现问题,但是当我作为独立运行代码时,没有问题。任何想法如何解决\跟踪问题?

waitbar 函数文档的链接:https ://www.mathworks.com/help/matlab/ref/waitbar.html

这是我使用的代码(来自 mathworks 文档):

function approxpi

f = waitbar(0,'1','Name','Approximating pi...',...
    'CreateCancelBtn','setappdata(gcbf,''canceling'',1)');

setappdata(f,'canceling',0);

% Approximate pi^2/8 as: 1 + 1/9 + 1/25 + 1/49 + ...
pisqover8 = 1;
denom = 3;
valueofpi = sqrt(8 * pisqover8);

steps = 20000;
for step = 1:steps
    % Check for clicked Cancel button
    if getappdata(f,'canceling')
        break
    end

    % Update waitbar and message
    waitbar(step/steps,f,sprintf('%12.9f',valueofpi))

    % Calculate next estimate 
    pisqover8 = pisqover8 + 1 / (denom * denom);
    denom = denom + 2;
    valueofpi = sqrt(8 * pisqover8);
end

delete(f)
end

标签: matlabmatlab-figurematlab-guide

解决方案


推荐阅读