程序中断后执行WindowKeyPressFcn

时间:2018-11-13 12:49:34

标签: matlab callback

在while循环中运行matlab脚本时,我想检测按键的按下。目前,我只想在按下键后显示success。不幸的是,该消息仅在程序中断( CTRL + C )之后才显示,而在程序运行期间不显示。这是代码:

% 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

1 个答案:

答案 0 :(得分:3)

您需要中断正在运行的脚本的周期,以便Matlab可以在按键时处理其他事件。您可以通过在while循环中添加一个drawow来做到这一点,下面的代码应为您提供足够的能力以将其纳入您自己的代码中:

fig = figure;
set(fig,'WindowKeyPressFcn',@(hFig,hEvent)fprintf('pressed key %s\n',hFig.CurrentKey) );
drawnow();
while true
  if ~ishandle(fig); break; end
  drawnow();
end