禁止MATLAB自动获得焦点

9

我有以下问题:在我的MATLAB代码中,我使用类似于下面的语句

figure(1)

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

当我在后台运行一个大脚本并尝试在计算机上做其他事情时,MATLAB总是会占用焦点,我无法正常操作。

有没有办法禁止MATLAB这样做?我正在使用Linux Ubuntu。

4个回答

6

2
您可以通过在创建时使图形不可见(visible off),仅在需要显示时将其设置为可见。
例如:
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

或者:

set(f, 'Visible', 'on'); % 显示之前不可见的图形

请注意,如果将该图形保存为Matlab .fig文件,则它也会保存为不可见状态,这可能会有些令人困惑。


顺便说一下,在Linux中,我只是将Matlab屏幕移动到另一个工作区。 - drsealks
哈!聪明。可惜这对Windows不起作用。如果我们能够普遍地撤销特定程序窃取焦点的权限,那就太好了。 - Alan
@Shaun314,谢谢你发现这个错字。 - Alan

1
这是未经测试的,但基于智能图形的链接,看起来你只需要做到以下几点,就可以使你的图形不会夺取焦点:
set(0, 'CurrentFigure', h);

顺便提一下,如果你不知道的话,0的意思是“根”。

1
在R2018a中,引入了图形属性"WindowState",请参见https://blogs.mathworks.com/pick/2018/07/13/maximize-your-figures/。使用它,您可以执行以下操作:
set(0, 'DefaultFigureWindowState', 'minimized');

在实际运行脚本之前,这会导致所有“标准图”不会窃取焦点并以最小化状态打开。
仍然存在能够窃取焦点的函数。我没有详细调查,但我认为这主要是自动绘图函数,如psd、hist等,没有输出参数。如果你自己调用plot,应该没问题。

为什么要点踩?留个评论也好啊。 - Eike P.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接