Matlab Figure 监听键盘事件

Matlab 作为一个轻度编程的科学计算工具,Figure 是最常用的 GUI 工具。然而在使用过程中,有些场景会需要通过键盘来选择程序的执行分支。例如,我需要遍历一组数据,其中每个数据可能需要重复执行多次(有随机性),我的动作有三种:

  1. 暂停,因为需要对数据进行观察
  2. 在当前位置重复执行
  3. 到下一个位置执行

为什么不使用 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);
posted @ 2025-07-02 21:45  大毅毅咯  阅读(11)  评论(0)    收藏  举报