Matlab Figure 监听键盘事件
Matlab 作为一个轻度编程的科学计算工具,Figure 是最常用的 GUI 工具。然而在使用过程中,有些场景会需要通过键盘来选择程序的执行分支。例如,我需要遍历一组数据,其中每个数据可能需要重复执行多次(有随机性),我的动作有三种:
- 暂停,因为需要对数据进行观察
- 在当前位置重复执行
- 到下一个位置执行
为什么不使用 waitforbuttonpress 呢?因为我需要鼠标点来点去
我实现键盘响应有两种方法
1 waitforbuttonpress
w = waitforbuttonpress;
if w == 0 % 鼠标点击
disp('检测到鼠标点击');
else % 其他键盘按键
disp('检测到键盘按下');
end
2 Figure 的键盘响应函数
2.1 定义键盘响应函数
function ButttonDownFcn(src, event)
% 获取按下的键信息
key = event.Key % 按键名称
character = event.Character; % 实际字符(考虑Shift等修饰键)
modifier = event.Modifier; % 修饰键(Ctrl, Alt, Shift)
% 根据不同按键执行不同操作
switch key
case 'return'
% 执行下一个位置
i = evalin('base', 'i');
assignin('base', 'i', i+1); % 通过这两条语句,能读写工作区的变量
end
uiresume(src); % 关键语句,让程序恢复运行
end
2.2 注册响应函数
f = figure;
set(f, 'WindowKeyPressFcn', @ButttonDownFcn);
2.3 让程序暂停,等待按键事件
uiwait(f);
浙公网安备 33010602011771号