0

正如标题所说,我正在使用 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);

我知道这有点乱,但我稍后会整理。我面临的问题是如何在指南创建的 GUI 脚本中声明我自己的函数,并允许该函数访问 GUI 对象的句柄。

4

1 回答 1

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);
于 2012-11-21T16:43:09.507 回答