确定是否使用了 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),而是单独设置每个 uicontrolKeyPressFcn,只需指定一个编辑框的不同(或没有)KeyPressFcn 会起作用。