使用 while 循环和 get() 将键盘输入限制为特定字符



我试图在 Matlab 的 while 循环中将图形上可能输入的范围限制为"y"和"n"。但是,下面的代码不能正常工作(至少据我所知(。

answ = get(fig, 'CurrentCharacter');
while answ ~= 'n' & answ ~= 'y'
answ = get(fig, 'CurrentCharacter');
end

如何实现所需的行为?get似乎只捕获了第一个输入。当我显示变量时,循环会永远持续下去,即使 answ 中的字符显然是"n"或"y"并且不会随着随后的按键而改变。此外,有时图形会消失,输入将开始被终端捕获。 在命令窗口中执行代码似乎会产生所需的行为:

>> answ
answ = n
>> answ ~= 'n' & answ ~= 'y'
ans = 0
answ = x
>> answ ~= 'n' & answ ~= 'y'
ans = 1

你不应该使用循环来侦听字符,而应该使用数字回调! 例如:

fig = figure('KeyPressFcn',@Key_Down);
function Key_Down(src,event)
switch event.Character
case 'y'
disp('y')
case 'n'
disp('n')
end
end

"KeyPressFcn"是按下某个键时引发的事件,Matlab 将调用您的Key_Down函数。在event结构中,您将找到键,修饰符(Shift,CTRL等(和其他信息。

相关内容

  • 没有找到相关文章

最新更新