按下按钮后在Matlab GUI中重置计时器

时间:2019-10-04 04:39:20

标签: matlab

所以我使用AppDesigner制作了一个GUI,它看起来像:

enter image description here

两个白框是App Designer的实际UITextArea元素。以上是应用程序执行后的时间,计时器开始倒计时并在UITextArea上显示时间。我用于计时器的代码如下:

methods (Access = private)

    function countdown(app)
        while true
            try
                minute = 29;
                set(app.TextArea1, 'Value', num2str(minute));
                seconds = 0;
                set(app.TextArea2, 'Value', num2str(seconds));
                while minute > 0
                    seconds = 59;
                    while seconds > 0
                        set(app.TextArea2, 'Value', num2str(seconds));
                        pause(1);
                        seconds = seconds - 1;
                    end
                    minute = minute - 1;
                    set(app.TextArea1, 'Value', num2str(minute));
                end
            catch
                break;
            end
        end
    end

由于我希望计时器在启动时开始计时,所以我在启动时调用了该函数:

function startupFcn(app)    
        app.countdown;
end

但是,我现在遇到的问题是我有这个按钮,按下它时,我希望计时器重置回其原始值并再次开始计时。

function ResetButtonPushed(app, event)
    app.countdown
    %other process executes here onwards.
    .
    .
end

但是问题是,我希望调用app.countdown之后的其他进程继续进行,在我的情况下,程序将等待app.countdown执行完毕,然后再移至下一行。有解决方法吗?

1 个答案:

答案 0 :(得分:0)

您可以添加属性ResetFlag = 0。在您的countdown方法中,您必须添加一个if条件并运行一次过程。

properties (Access = private)
   ResetFlag = 0
end

function countdown(app)
   while true
   try
   if app.ResetFlag
      disp('My Proccess');
      app.ResetFlag = 0;
   end
...

在ResetButton回调函数中将标志设置为1。

function ResetButtonPushed(app, event)
   app.ResetFlag = 1;
   app.countdown();
end