确定是否使用了 MATLAB GUI edittextbox
Determine whether a MATLAB GUI edittextbox is is use
基本上我有一个非常复杂的 Matlab GUI,用户可以在其中通过编辑文本框(您可以输入的文本框)添加不同的字符串。问题是我为不同的键盘按钮下推分配了不同的功能,例如 's' 和 'e' 正在使用中。每次您尝试输入 'snake' 时,分配给 's' 和 'e' 的函数都会被执行。有什么方法可以确定我是否点击了编辑文本框,它正在使用中 -> 就像一个逻辑值,所以我可以通过检查它来阻止按键功能。
在回调中,您可以使用 gco
获取当前对象。然后您可以检查这是否是您的编辑框的图形句柄。
fig = figure('WindowKeyPressFcn', @(s,e)keypress());
hedit = uicontrol('Style', 'edit');
function keypress()
if ~isequal(gco, hedit)
disp('Window Key Press')
end
end
另一方面,如果您没有设置全局按键回调(使用 WindowKeyPressFcn
),而是单独设置每个 uicontrol
的 KeyPressFcn
,只需指定一个编辑框的不同(或没有)KeyPressFcn
会起作用。
基本上我有一个非常复杂的 Matlab GUI,用户可以在其中通过编辑文本框(您可以输入的文本框)添加不同的字符串。问题是我为不同的键盘按钮下推分配了不同的功能,例如 's' 和 'e' 正在使用中。每次您尝试输入 'snake' 时,分配给 's' 和 'e' 的函数都会被执行。有什么方法可以确定我是否点击了编辑文本框,它正在使用中 -> 就像一个逻辑值,所以我可以通过检查它来阻止按键功能。
在回调中,您可以使用 gco
获取当前对象。然后您可以检查这是否是您的编辑框的图形句柄。
fig = figure('WindowKeyPressFcn', @(s,e)keypress());
hedit = uicontrol('Style', 'edit');
function keypress()
if ~isequal(gco, hedit)
disp('Window Key Press')
end
end
另一方面,如果您没有设置全局按键回调(使用 WindowKeyPressFcn
),而是单独设置每个 uicontrol
的 KeyPressFcn
,只需指定一个编辑框的不同(或没有)KeyPressFcn
会起作用。