您当前的位置: 首页 >  ui

wendy_ya

暂无认证

  • 0浏览

    0关注

    342博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

MATLAB GUI介绍之如何设定快捷键

wendy_ya 发布时间:2021-04-23 11:15:24 ,浏览量:0

0、功能介绍

快捷键是某些特定的按键、按键顺序或按键组合,可用于完成一个特定操作。快捷键往往与Ctrl键、Shift键、Alt键、Fn键以及Windows键配合使用。对于一个比较完善的软件来说,快捷键是必需的,这样可以加快操作速度,提高工作效率。

1、按键回调函数 句柄函数名使用说明WindowKeyPressFcn当焦点在figure上或它的任何组件上时,按下任意键执行该函数WindowKeyReleaseFcn当焦点在figure上或它的任何组件上时,释放任意键执行该函数KeyPressFcn当焦点在figure上而不是在它的任何组件上时,按下任意键执行该按钮KeyReleaseFcn当焦点在figure上而不是在它的任何组件上时,释放任意键执行该按钮

eventdata参数是一个包含Key、Character和Modifier这3个字段的结构体,3个字段说明如下:

字段说明Key被按下键的键名(小写字母)Character被按下键的键符解释Modifier被按下的辅助键的键名(如Ctrl、Shift、Alt)

举个栗子,例如对于WindowKeyPressFcn: ①当焦点定位在GUI figure上时,在键盘上按下“]”键,这时eventdata的3个字段分别是: Character:’]’;Modifier:{1x0 cell};Key:‘rightbracket’; “]”的键符是“]”,键名是“rightbracket”,因为没有按辅助键,所以Modifier为空。

②当焦点定位在GUI figure上时,在键盘上按下组合键“Ctrl”+“=”键,这时eventdata的3个字段分别是: Character:’=’;Modifier:{‘control’};Key:‘equal’; 因为按下了辅助键Ctrl,所以Modifier为’control’。

综上示例,我们可以根据回调函数中eventdata的3个字段值,设定自定义的快捷键。

2、案例示例

创建一个GUI界面,主界面如下: 在这里插入图片描述 界面上含有3个按钮Pushbutton,1个静态文本框text。 功能介绍: ①单击“加1”按钮,text中的数据进行加1操作; ②单击“减1”按钮,text中的数据进行减1操作; ③单击“退出”按钮,退出GUI界面。

对应的程序如下: “加1”程序:

function pushbutton1_Callback(hObject, eventdata, handles)
N=str2double(get(handles.text1,'String'));
set(handles.text1,'String',num2str(N+1));

“减1”程序:

function pushbutton2_Callback(hObject, eventdata, handles)
N=str2double(get(handles.text1,'String'));
set(handles.text1,'String',num2str(N-1));

“退出”程序:

function pushbutton3_Callback(hObject, eventdata, handles)
close(gcf)
3、给按钮添加快捷键

快捷键如下表:

功能快捷键“加1”程序Ctrl+q“减1”程序Alt+q“退出”程序q 3.1 创建WindowKeyPressFcn函数

视图——>查看回调——>WindowKeyPressFcn 在这里插入图片描述 函数代码如下:

function figure1_WindowKeyPressFcn(hObject, eventdata, handles)

if isempty(eventdata.Modifier)%判断是否有快捷键
    ctrl='';%无则赋值为空
else
    ctrl=eventdata.Modifier{1};%有,则取出辅助键
end
key=eventdata.Key;%提取键名
switch ctrl
    case 'control'%辅助键为Ctrl时
        switch key
            case 'q' %Ctrl+q +1操作
                pushbutton1_Callback(handles.pushbutton1,[],handles)
            otherwise
        end
    case 'alt'%辅助键为Alt时
        switch key
            case 'q'%Alt+q -1操作
                pushbutton2_Callback(handles.pushbutton1,[],handles)
            otherwise
        end
    case ''%无辅助键时
        switch key
            case 'q'%q执行退出操作
                pushbutton3_Callback(handles.pushbutton1,[],handles)
            otherwise
        end
    otherwise
end
4、拓展 4.1 给菜单添加快捷键

给菜单添加快捷键十分简单,选择 菜单编辑器——>选择菜单——>在右侧直接添加快捷键即可 在这里插入图片描述

4.2 多辅助键的快捷键

前面给出的实例都是单个辅助键加一个按键组成的快捷键,当需要大量快捷键或是有特定需要时,可能会用到多个辅助键。

当按下Ctrl+Shift+a时,eventdata的3个字段分别是: Character:’’;Modifier:{‘shift’ ‘control’};Key:‘a’; 当按下Ctrl+Shift+alt+a时,eventdata的3个字段分别是: Character:’’;Modifier:{‘shift’ ‘control’ ‘alt’};Key:‘a’; 可以看出,所有的辅助键都保存在Modifier字段里,而且3个辅助键的排列顺序依次是:‘shift’–>‘control’–>‘alt’,按键保存在Key字段里。 程序如下:

ctrl='';
if ~isempty(eventdata.Modifier)
   for i=1:length(eventdata.Modifier)
       ctrl=[ctrl.eventdata.Modifier{i},'+'];
   end
end
ctrl=ctrl(1:end-1);%得到辅助键
key=eventdata.Key;%按键
switch ctrl
    case 'shift'%shift
        switch key
            case 'a'
                ...
            otherwise
        end
    otherwise
end

完整程序,可以参考:https://download.csdn.net/download/didi_ya/17073895

ok,以上便是全部内容了,如果对你有所帮助,记得点个赞哟~

关注
打赏
1659256378
查看更多评论
立即登录/注册

微信扫码登录

0.0397s