WindowKeyPressFcn выполняется после прерывания программы - PullRequest
0 голосов
/ 13 ноября 2018

Я хочу обнаружить нажатие клавиши при запуске сценария Matlab в цикле while. На данный момент я хочу отображать 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 голосов
/ 13 ноября 2018

Вам нужно прервать цикл запуска скрипта, чтобы Matlab обрабатывал другие события, по сути, ваше нажатие клавиши.Вы можете сделать это, добавив drawnow внутри вашего цикла while, приведенный ниже код должен дать вам достаточно для включения в ваш собственный:

fig = figure;
set(fig,'WindowKeyPressFcn',@(hFig,hEvent)fprintf('pressed key %s\n',hFig.CurrentKey) );
drawnow();
while true
  if ~ishandle(fig); break; end
  drawnow();
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...