我有一个简单的GUI代码,如下所示。 这个“test_keypress”函数创建一个图形,它响应按键(空格)。
现在,我想添加一个约束,以便Matlab在一段时间内(例如,1秒)只接受一个按键。 换句话说,如果在上一次按键发生后1秒内发生按键,我想拒绝按键。
我该怎么做?
function test_keypress
f = figure;
set(f,'KeyPressFcn',@figInput);
imshow(ones(200,200,3));
end
function figInput(src,evnt)
if strcmp(evnt.Key,'space')
imshow(rand(200,200,3));
end
end
答案 0 :(得分:3)
您可以存储当前时间,并且仅在最后一次按键发生后至少100秒发生按键时才评估imshow
命令。
function test_keypress
f = figure;
set(f,'KeyPressFcn',@figInput);
imshow(ones(200,200,3));
%# initialize time to "now"
set(f,'userData',clock);
end
function figInput(src,evnt)
currentTime = clock;
%# get last time
lastTime = get(src,'UserData');
%# show new figure if the right key has been pressed and at least
%# 100 seconds have elapsed
if strcmp(evnt.Key,'space') && etime(lastTime,currentTime) > 100
imshow(rand(200,200,3));
%# also update time
set(src,'UserData',currentTime)
end
end