当在while循环中运行matlab脚本时,我想检测按键的按下。目前,我只想在按键后显示success
。不幸的是,该消息仅在程序中断后显示(CTRL+
% Init of callback
fig = gcf;
set(fig,'WindowKeyPressFcn',@keyPressCallback);
% keyPressCallback function
function keyPressCallback(source,eventdata)
keyPressed = eventdata.Key;
if strcmpi(keyPressed,'space')
disp('success');
end
end
您需要打破正在运行的脚本的循环,以便Matlab处理其他事件,特别是您的按键。你可以通过在while循环中添加drawnow来做到这一点,下面的代码应该会给你足够的空间来合并到你自己的中:
fig = figure;
set(fig,'WindowKeyPressFcn',@(hFig,hEvent)fprintf('pressed key %sn',hFig.CurrentKey) );
drawnow();
while true
if ~ishandle(fig); break; end
drawnow();
end