在 matlab gui 中,按空格键 (un) 选中一个复选框,如果它被聚焦。我怎样才能关闭这种行为?

In a matlab gui pressing spacebar (un)checks a checkbox if it is focused. How can I turn this behaviour off?

我有一个用 guide 制作的 matlab gui,它有一个复选框 uicontroll。当该复选框获得焦点时,按空格键(取消)会选中该复选框。 我不想要这种行为 - 如何关闭它?

我想将其关闭,因为我已经为空格键定义了一个 keypressFcn,并且我希望在用户按下空格键时发生其他事情。 'something else' 正在工作的自动取款机。如果按下空格键,我的 keypressFcn 会运行并执行它应该执行的操作,此外还会选中复选框(取消)。不过,我只希望它执行我的 keypressFcn..

我真的不知道从哪里开始解决这个问题。只要一些一般的指导说明就已经很有帮助了!

我遇到了类似的问题。我的解决方案是设置一个虚拟 uicontrol(如带有空字符串的文本样式),并且在任何 uicontrol 回调中,我总是调用 uicontrol(dummy) 以聚焦虚拟 uicontrol,因此按空格键将无效。这听起来不是一个好的解决方案,但对我来说效果很好。

dummy = uicontrol(gcf, 'Style', 'text'); % use this for focus
ckbox = uicontrol(gcf, 'Style', 'CheckBox', 'String', 'myCheckBox', ...
         'Callback', @(h,e)uicontrol(dummy), 'Position', [100 200 100 32]);

如果您现在单击复选框,它会更改其值,并且回调会将焦点移至虚拟文本,因此空格键不会再更改其值。

如果用户可以按TAB键,它会循环符合条件的uicontrols,如果焦点在复选框上,空格键会再次改变它的值。我的解决方案是在 KeypressFcn 中执行 uicontrol(dummy) 以便在按下 TAB 键后虚拟对象将成为焦点。

当我遇到类似问题时,我破解了 KeyPressFcn 以绕过 spacebar:

function test_KeyPressFcn
    % Create a figure
    figure();

    % Add a check box with a KeyPressFcn callback, which will be called when the user preses a key
    uicontrol('Style' , 'checkBox','KeyPressFcn' , @KeyPressed);


function KeyPressed(src , event)
    if strcmpi(event.Key , 'space')
        % Pressing the spacebar changed the value of the checkbox to
        % new_value
        new_value = get(src , 'Value');
        % Let's revert it to its old value
        set(src , 'Value' , ~new_value)
    end

space 栏仍然有效,但您将复选框设置回其原始值!