下面的脚本等待用户按下某个键(“y”、“n”或任何其他字符)和/或 Enter 键:
prompt = 'Do you say yes or no? y/n[n]: ';
txt = input(prompt,'s');
Run Code Online (Sandbox Code Playgroud)
n
但是,我喜欢它在一段时间(例如 10 或 20 秒)后自动选择,而不是无限期地等待。
我正在查看这篇文章(设置用户输入的时间限制),但get(gcf, 'CurrentCharacter');
打开了一个我不喜欢的图形窗口。
有没有办法为input()
函数设置计时器,或者是否有其他方法来获取用户输入(例如,我可以使用 while 循环和pause()
)?
我正在使用 MATLAB R2020a
您可以创建一个timer()
在指定持续时间后执行的函数,并在该函数中模拟按键事件:
duration = 10; % sec
t = timer('StartDelay', duration, 'TimerFcn', @timeFunc);
prompt = 'Do you say yes or no? y/n[n]: ';
start(t);
txt = input(prompt,'s');
stop(t);
delete(t);
if isempty (txt), txt = 'n'; end
% Simulate the Enter keypress
function timeFunc(~, ~)
robot = java.awt.Robot;
robot.keyPress(java.awt.event.KeyEvent.VK_ENTER);
robot.keyRelease(java.awt.event.KeyEvent.VK_ENTER);
end
Run Code Online (Sandbox Code Playgroud)