代码之家  ›  专栏  ›  技术社区  ›  Maxxx

按下按钮后在matlabgui中重置定时器

  •  0
  • Maxxx  · 技术社区  · 5 年前

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

    enter image description here

    这两个白框实际上是应用程序设计器的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
    

    0 回复  |  直到 5 年前
        1
  •  0
  •   oro777    5 年前

    可以添加属性 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