首页 > 解决方案 > 在 MATLAB GUI 中的选择之间重置弹出菜单

问题描述

我正在尝试使用 animatedline 函数绘制动画,并使用 popupmenu 控制动画的速度。(如 1/2x、1x、2x、4x 等)。

以不同的速度创建我的动画没有任何问题。

问题是,例如,当我单击“案例 3”时,它开始绘制动画,当我单击案例 4(不等待案例 3 的动画结束)时,它会创建新的(案例 4)。直到这个时候我仍然没有任何问题。但是,当“案例 4”结束时,之前的选择仍在继续(案例 3)。我想弄清楚这个问题。我想要的是,一旦我做出新的选择,它应该忘记前一个。

我在下面附上了我的代码。

这个问题有什么解决办法吗?

提前致谢。

 switch get(handles.threeDOF_animation_speed,'Value')  
    case 1       
    case 2
        run('threeDOF_create_animation.m')
        set(handles.button_3DOF_save_gif,'Enable','on')
     case 3

        run('threeDOF_create_animation.m')
        set(handles.button_3DOF_save_gif,'Enable','on')
    case 4
        run('threeDOF_create_animation.m')
        set(handles.button_3DOF_save_gif,'Enable','on')
     case 5
        run('threeDOF_create_animation.m')
        set(handles.button_3DOF_save_gif,'Enable','on')
end

标签: matlabanimationpopupmenu

解决方案


在我看来,你需要先为你正在制作的每一个情节进行重置。因此,当您首先单击按钮然后使其运行动画时,请在轴上使用清除。

function ClearLinesFromAxes()
  axesHandlesToChildObjects = findobj(gca, 'Type', 'line');
  if ~isempty(axesHandlesToChildObjects)
    delete(axesHandlesToChildObjects);
  end  
  return; % from ClearLinesFromAxes

资料来源: https ://nl.mathworks.com/matlabcentral/answers/21006-how-to-erase-a-line

还有什么可能有效:

You probably want cla(), but perhaps you want clf()

资料来源:https ://nl.mathworks.com/matlabcentral/answers/40925-how-to-clear-a-plot-in-gui


推荐阅读