【问题标题】:Disallow MATLAB to take focus automatically [duplicate]禁止MATLAB自动聚焦[重复]
【发布时间】:2013-06-26 02:29:20
【问题描述】:

我有以下问题:在我的 MATLAB 代码中,我使用了类似

的语句
figure(1)

更改某些数据的目标图形。问题是,在此之后 MATLAB 将系统焦点放在带有此图的窗口上。

当我在后台运行一个大脚本并尝试在我的计算机上执行其他操作时,MATLAB 总是集中注意力,我无法正常执行某些操作。

有没有办法禁止 MATLAB 这样做?我在 Linux Ubuntu 中工作。

【问题讨论】:

    标签: matlab matlab-figure


    【解决方案1】:

    "Smart"/Silent Figure 丹尼尔·伊顿。

    【讨论】:

      【解决方案2】:

      您可以通过在创建时使图形不可见(不可见)来做到这一点,并且仅在您想显示它时才使其可见。

      例如:

      f = figure('Visible', 'off'); %create an invisible figure
      plot(rand(1,15)); %plot some stuff to it.
      
      saveas(f, 'test.png', 'png'); %write out the image as a png
      close(f); %destroy the figure
      

      或者: 设置(f,“可见”,“开”); %显示一个以前不可见的图形

      注意,如果将图形保存为 Matlab .fig 文件,它还会保存它不可见的事实,这可能会有点混乱。

      【讨论】:

      • 顺便说一下,在 Linux 中我只是将 matlab 屏幕移到另一个工作区
      • 哈!聪明的。可惜不适用于windows。如果我们一般可以撤销对特定程序窃取焦点的许可,那就太好了。
      • @Shaun314 感谢您发现错字
      【解决方案3】:

      在R2018a中,引入了图形属性“WindowState”,见https://blogs.mathworks.com/pick/2018/07/13/maximize-your-figures/

      使用这个,你可以做到

      set(0, 'DefaultFigureWindowState', 'minimized');
      

      在运行实际脚本之前,这将导致所有“标准绘图”不窃取焦点并以最小化状态打开。

      有些功能仍然会窃取焦点。我没有详细调查,但我相信它主要是没有输出参数的自动绘图功能,如 psd、hist 等。如果你自己打电话给plot 应该没问题。

      【讨论】:

      • 为什么投反对票?评论会很好。
      【解决方案4】:

      这是未经测试的,但根据智能人物的链接,看起来你需要做的就是让你的人物不偷走焦点:

      set(0, 'CurrentFigure', h);
      

      顺便说一句,如果你不知道,0 的意思是“根”

      【讨论】:

        猜你喜欢
        • 2020-08-13
        • 2018-11-05
        • 1970-01-01
        • 2013-02-10
        • 2017-03-08
        • 2014-06-29
        • 1970-01-01
        • 2019-07-04
        • 1970-01-01
        相关资源
        最近更新 更多