禁止Matlab窗口焦点窃取

Nor*_*löw 49 matlab plot focus window-management

有没有办法告诉Matlab 不要在诸如figure和之类的图形命令上窃取窗口焦点(来自外部编辑器),例如Emacs plot.这会大大提高我的工作效率,因为我经常希望在数据(重新)处理过程中继续进行代码开发.

Pea*_*oto 42

有可能,诀窍是不使用figure语句,而是直接更改当前数字.这将在不改变焦点的情况下更改活动图.通常我做这样的事情:

function change_current_figure(h)
set(0,'CurrentFigure',h)
Run Code Online (Sandbox Code Playgroud)

然后,所有图(h)语句都需要更改为change_curent_figure(h).

注意,这包含在matlab文档中.

应该注意,这仅在已经创建了图形时才有效.如果要定期创建新的数字,可以创建数字作为前几行代码,保存句柄,进行处理,然后绘制到它们.这个例子可行.请注意,drawnow命令将刷新事件缓冲区,确保绘制所有数字.

我从2007年到2010年看过这项工作,不确定最新版本或早期版本是否支持此版本,尽管我没有理由怀疑它们没有.

fig1=figure;
fig2=figure;
drawnow;
[a b]=do_complex_processing;
change_current_figure(fig1)
plot(a);
change_current_figure(fig2)
plot(b);
Run Code Online (Sandbox Code Playgroud)

  • 虽然因为`plot()`窃取(我的)窗口焦点而且提高了数字窗口,但没有多少帮助.我们也能防止这种情况吗?我坐在Ubuntu 11.10上. (2认同)