在我的Matlab脚本中,我希望用户有5秒的时间来回答问题,只需单击任何鼠标按钮即可,无需点击鼠标即可。如果用户单击鼠标按钮,脚本将继续。如果在没有鼠标单击的情况下经过5秒,脚本也会继续。 有什么想法怎么做?
我在[x,y,MouseClick]=ginput(1);
tic
循环中尝试toc
,并记录MouseClick
变量,但脚本暂停在ginput
,直到输入内容为止永远等在那里。如果没有输入,我需要它在5秒后继续前进。
以下是代码:
for i=2:26
% display current letter
CurrentLetter=Data{i}{RowSelect};
letter = text (0.3, 0.5, CurrentLetter, 'fontsize', 400, 'color', 'r');
pause(0.5);
delete (letter); % blank screen
% allow 5 seconds to collect mouse click
tic;
MouseClick=0;
while (toc<=5);
pause(0.1);
[x,y,MouseClick]=ginput(1);
if MouseClick~=0
break; % stop loop if a mouse click has been pressed
end
end
% add up the scores and write them to an xls file
end
答案 0 :(得分:0)
您可以致电waitforbuttonpress
等待输入 - 无论是鼠标点击还是按键。您也可以预先注册一个计时器,这将模拟5秒延迟的按键事件。通过waitforbuttonpress
返回的值,您可以判断用户是否单击鼠标按钮,或者是否是按键事件(由用户手动触发,或由计时器自动触发)。
figure();
t = timer('TimerFcn', 'java.awt.Robot().keyPress(java.awt.event.KeyEvent.VK_SPACE);', 'StartDelay', 5);
start(t);
k = waitforbuttonpress();
if k == 0
display('user made a mouse button click!');
else
display('5 seconds elapsed, or user pressed a button!');
end
display('doing something...');
答案 1 :(得分:0)
您可以使用uiwait并继续: 我只是假设你有一个带有各种回调的按钮。
所以你构建按钮并在GUI中覆盖其他按钮并在之后调用uiwait(gcf, 5)
。
在按钮回调中,您可以执行任何操作,可能在某处记录答案,最后调用uiresume(src.parent)