Matlab Slider-显示左右箭头并每1秒移动滑块

时间:2012-11-21 16:29:16

标签: matlab user-interface timer slider

正如标题所说,我在Matlab中使用GUIDE工具箱,我首先想知道如何在滑块的两端显示左/右箭头?

另外,如何让滑块每1秒自动移动一次?

据我了解,我需要先创建一个计时器对象,并按如下方式设置执行模式和周期:

time = timer;
set(time,'executionMode','fixedRate','period',1);

现在我知道我需要将timerFcn设置为:

set(handles.slider1,'Value',x); 

以更改滑块的位置。

另外我理解我需要首先通过滑块步骤递增x变量,在我的情况下是0.00520833。例如:

x = x + 0.00520833;

所以我有一些代码如下:

time = timer;
set(time,'executionMode','fixedRate','period',1);
time.timerFcn = set(handles.slider1,'Value', x = x + 0.00520833); 
start(time);

然而这不起作用,我确定这是因为我正在做的事情。

谢谢!

编辑:

现在我可以每秒移动滑块,但我想做的是每秒运行一次我自己的功能。例如:

time.timerFcn = @slider_increment;

function slider_increment

set(handles.slider1,'Value', get(handles.slider1,'Value') + 0.00520833)

slider = get(handles.slider1,'Value');
set(handles.text4,'String', slider);

我知道这有点乱,但我稍后会对此进行排序。我面临的问题是如何在由guide创建的GUI脚本中声明我自己的函数,并允许该函数访问GUI对象的句柄。

1 个答案:

答案 0 :(得分:0)

首先,这个

time.timerFcn = set(handles.slider1,'Value', x = x + 0.00520833); 

肯定会产生错误......

我想你想要这样的东西:

h = uicontrol;

time = timer;
set(time,'executionMode','fixedRate','period',1);

%Note: set(h,val,get(h,val) + change)
time.timerFcn = @(x,y)set(h,'position', get(h,'position') + 10);

start(time);