Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MATLAB菜单中使用Enter作为加速器_Matlab_Callback_Matlab Figure_Acceleratorkey - Fatal编程技术网

在MATLAB菜单中使用Enter作为加速器

在MATLAB菜单中使用Enter作为加速器,matlab,callback,matlab-figure,acceleratorkey,Matlab,Callback,Matlab Figure,Acceleratorkey,我正在MATLAB中构建GUI,目前正在使用uimenu添加自定义菜单。我正在尝试为不同的菜单操作添加不同的加速器 我发现在uimenu(见下文)中将char(10)(换行符)作为加速器字符传递给matlab会将Ctrl+Enter添加为该菜单的加速器标签。问题是,当我点击Ctrl+Enter时,它不会运行回调 你知道为什么这样不行吗?我错过什么了吗?“运行当前区段”的Ctrl+Enter是否取消我的通话?在这种情况下,我可以覆盖它吗 例子 MATLAB如何不接受Ctrl+Enter funct

我正在MATLAB中构建GUI,目前正在使用
uimenu
添加自定义菜单。我正在尝试为不同的菜单操作添加不同的加速器

我发现在
uimenu
(见下文)中将
char(10)
(换行符)作为加速器字符传递给matlab会将
Ctrl+Enter
添加为该菜单的加速器标签。问题是,当我点击
Ctrl+Enter
时,它不会运行回调

你知道为什么这样不行吗?我错过什么了吗?“运行当前区段”的
Ctrl+Enter
是否取消我的通话?在这种情况下,我可以覆盖它吗

例子 MATLAB如何不接受
Ctrl+Enter

function test
close all
f=figure;
m=uimenu(f,'Label','test');
uimenu(m,'Label','a','callback',@hittest,'Accelerator','r');
uimenu(m,'Label','b','callback',@hittest,'Accelerator',char(10));

    function hittest(h,~)
        disp(h.Label)
    end
end

如前所述,主应用程序似乎已注册此加速器,因此阻止GUI拦截此调用

您可以尝试在中更改MATLAB的键盘快捷键。请注意,这只会影响MATLAB的安装

如果在
-nodesktop
模式下启动MATLAB,则这将阻止MATLAB IDE启动IDE,并应释放加速器供您使用

matlab -nodesktop
由于您提到这将是一个已部署的应用程序,因此您可以始终使用
isdeployed
检查它是否作为已部署的应用程序运行,如果不是,则可以使用备用键盘快捷键,这样您就不必在没有IDE的情况下连续启动MATLAB

if ~isdeployed
    % Use some other keyboard shortcut for testing
    set(hmenu, 'Accelerator', <some other key for testing>)
else
    % Use the enter key on deployed applications
    set(hmenu, 'Accelerator', char(10))
end

你的回调错误被排除了,但这对我在OSX上是有效的。你能试着在没有桌面的情况下运行MATLAB来确认你的怀疑吗?还有什么版本和操作系统?版本:9.0.0.370719(R2016a)操作系统:Microsoft Windows 7企业版6.1(Build 7601:Service Pack 1)我将尝试运行无窗口并返回!好的,只要我在
-nodesktop
模式下运行它,它对我也适用。我想这很好,因为当我完成它时,它将被部署。你知道即使在桌面模式下也能让它工作吗?我怀疑在桌面模式下也没有一个好方法。应用程序似乎在很低的级别劫持了该快捷方式。好吧,太糟糕了。我对stackexchange还很陌生,这里的正确操作是什么?删除我的帖子或回答我自己的问题,让别人在将来看到?
if usejava('desktop')
    % Use some other keyboard shortcut for testing
    set(hmenu, 'Accelerator', <some other key for testing>)
else
    % Use the enter key on deployed applications
    set(hmenu, 'Accelerator', char(10))
end