过剧情window时如何从键盘获取字符?
How to get a character from the keyboard when over the plot window?
我在显示绘图时需要一些键盘输入。使用 waitforbuttonpress()
功能,我可以检测是否按下了鼠标按钮或键盘上的某个键,但我无法选择特定的 key/character。
我需要一种从绘图输出 window 而不是文本控制台的方法。
这是我目前拥有的:
clf;
colormap ("default");
filename_orig = "./orig.data"
load("-text", filename_orig, "M")
M
t = 1
h = imagesc (M(:,:,t));
title ("Test data");
xlabel ("x");
ylabel ("y");
# Loop across time
b = 0;
for i = 1:10
for t = 1:size(M,3)
title(["Test data; t = ", num2str(t)]);
set(h, 'cdata', M(:,:,t)) # update latest frame
pause(0.20) # keep >0 to ensure redraw
b = waitforbuttonpress();
if(b == 1)
break;
endif
end
if(b == 1)
break;
endif
end
我想删除外层循环,并允许根据用户的按键increment/decrement t
变量。
顺便问一下,是否可以删除双 break
以退出嵌套循环?
理想情况下,这就是我想要的:
# Loop across time
b = 0;
t = 0;
while(1)
title(["Test data; t = ", num2str(t)]);
set(h, 'cdata', M(:,:,t)) # update latest frame
pause(0.20) # keep >0 to ensure redraw
k = readKeyboard(); # pseudo function
if(k == '+')
t = t + 1;
endif
if(k == '-')
t = t - 1;
endif
if(t < 0)
t = max;
endif
if(t > max)
t = 0;
endif
end
您可以将 WindowKeyPressFcn 回调函数附加到图中:
global t
function my_cbf(object, event)
k = event.key;
if(k == '+')
t = t + 1;
end
...
end
figure_handle = gcf();
set(figure_handle, 'WindowKeyPressFcn', my_cbf)
我在显示绘图时需要一些键盘输入。使用 waitforbuttonpress()
功能,我可以检测是否按下了鼠标按钮或键盘上的某个键,但我无法选择特定的 key/character。
我需要一种从绘图输出 window 而不是文本控制台的方法。
这是我目前拥有的:
clf;
colormap ("default");
filename_orig = "./orig.data"
load("-text", filename_orig, "M")
M
t = 1
h = imagesc (M(:,:,t));
title ("Test data");
xlabel ("x");
ylabel ("y");
# Loop across time
b = 0;
for i = 1:10
for t = 1:size(M,3)
title(["Test data; t = ", num2str(t)]);
set(h, 'cdata', M(:,:,t)) # update latest frame
pause(0.20) # keep >0 to ensure redraw
b = waitforbuttonpress();
if(b == 1)
break;
endif
end
if(b == 1)
break;
endif
end
我想删除外层循环,并允许根据用户的按键increment/decrement t
变量。
顺便问一下,是否可以删除双 break
以退出嵌套循环?
理想情况下,这就是我想要的:
# Loop across time
b = 0;
t = 0;
while(1)
title(["Test data; t = ", num2str(t)]);
set(h, 'cdata', M(:,:,t)) # update latest frame
pause(0.20) # keep >0 to ensure redraw
k = readKeyboard(); # pseudo function
if(k == '+')
t = t + 1;
endif
if(k == '-')
t = t - 1;
endif
if(t < 0)
t = max;
endif
if(t > max)
t = 0;
endif
end
您可以将 WindowKeyPressFcn 回调函数附加到图中:
global t
function my_cbf(object, event)
k = event.key;
if(k == '+')
t = t + 1;
end
...
end
figure_handle = gcf();
set(figure_handle, 'WindowKeyPressFcn', my_cbf)