我想找到一些稳定的方法,可以在循环结束时按 Enter / Spacebar / ... 我不能让选项(1-2)稳定地工作。 我不需要任何GUI来完成任务。 只需按下键即可在Matlab提示中输出文本。 我尝试过这些选项但没有成功,但它们导致我的代码停滞不前,以至于没有密钥不起作用
while 1 % just indicating here a loop, not in actual code
% Plotting here 6 Figures, and iterating/updating them in the loop
% Option 1
% apparent docs: https://se.mathworks.com/matlabcentral/fileexchange/7465-getkey
while getkey ~= 13,
disp('Enter was not pressed. Try again.');
end
disp('Enter was pressed.');
% Option 2
% Docs: https://se.mathworks.com/help/matlab/ref/waitforbuttonpress.html
w = waitforbuttonpress;
if w == 0
disp('Button click')
else
disp('Key press')
end
end
Matlab:2016a
操作系统:Debian 8.5 64位
硬件:华硕Zenbook UX303UA
答案 0 :(得分:2)
以下代码将等到 空格键 被按下。
f = figure;
% The next line is just to hide the fig window away from the screen (not really necessary)
set(f, 'Position', [1e-12 1e-12 1e-12 1e-12])
k=0;
while ~k
k=waitforbuttonpress;
if ~strcmp(get(gcf,'currentcharacter'),' ');
k=0;
end
end
close(f) %Closing the figure
答案 1 :(得分:1)
在循环结束时添加pause
。
答案 2 :(得分:-3)
我对Sardar_Usama answer的修订版。
从接受的答案编辑:窗口的最小布局,中心位置,最小窗口大小,而不是隐藏,因为在等待执行时需要做其他事情。
waitforbuttonpress
的暂停在我的动态环境中也是不够的; pause
有效,但不明白为什么
pause(1); % not sure; but this helps in many dynamic cases
% waitforbuttonpress pause is not sufficient
% https://stackoverflow.com/a/39816935/54964
f = figure('Name', 'Press SPACEBAR to continue', 'NumberTitle', 'off', ...
'ToolBar', 'none', 'MenuBar', 'none', 'Units','centimeters', 'Position',[0 0 10 1]);
movegui(f,'center');
k=0;
while ~k
k=waitforbuttonpress; % includes pause in itself so no pause() need
if ~strcmp(get(gcf,'currentcharacter'),' ');
k=0;
end
end
close(f)