举个栗子:
使用“Alt+A”的组合键获取matlab已打开的所有Figure的号码
在MATLAB App Designer中,要实现按下"Alt+A"组合键来获取所有已打开图窗的号码,需要创建一个回调函数以响应键盘按键事件。以下是具体步骤:
-
打开App Designer并创建一个新的应用程序。
-
选择应用程序的UIFigure组件。
-
在右侧的属性面板中,找到"Callbacks"部分,点击"WindowKeyPressFcn"旁边的加号图标以创建一个键盘按键回调函数。
-
在新创建的
function UIFigureWindowKeyPressFcn(app, event)
函数内,检查按键组合是否为"Alt+A",然后编写相应的代码来获取所有已打开的图窗号码。
示例代码如下:
function GreatFigureUIFigureKeyPress(app, event)
key = event.Key; % 返回的是按键字符的小写,如:按空格键返回space
modifier = event.Modifier; % ctrl alt shift 以及它们的任意组合
%% 注意modifier识别的ctrl按键为control字符
if all([ismember(modifier,"control"),key == 'a']) % Alt+A快捷键设置:填充所有Figure号码
allFigures = findall(groot, 'Type', 'figure');
FigNums = [allFigures.Number];
app.FigTex.Value = num2str(FigNums); % app.FigTex是app中创建的一个“编辑字段”组件
end
end
小技巧:ismember、all
ismember(a,b):判断a的元素是否属于b
all(ismember(a,b)):判断a的元素是否全属于b
利用这两个函数可以实现快捷键功能的多样化,如:
1.ctrl+a、alt+a、ctrl+alt+a多个不同的快捷键实现同一个功能,只需
if all([ismember(modifier,["control","alt"]),key == 'a'])
2.ctrl+alt+a 多个功能键组合成的快捷键实现同一个功能,只需
if all([ismember(["control","alt"],modifier),key == 'a'])
注:
键盘快捷键需要用到键盘回调函数,而键盘回调函数有两种:KeyPressFcn
和WindowKeyPressFcn
键盘回调,区别在于:
当光标(不是鼠标)位于某组件内部时,KeyPressFcn无法调用,而
WindowKeyPressFcn不受限制。