问与答 禁止Matlab窗口焦点窃取

waldron · 2020-02-22 19:30:17 · 热度: 44

有没有办法告诉Matlab不要从诸如figureplot之类的图形命令上窃取窗口焦点(从外部编辑器,例如Emacs)到我。这将大大提高我的生产率,因为我经常想在数据期间继续代码开发(重新 -)处理。

猜你喜欢:
共收到 1 条回复
izaiah #1 · 2020-02-22 19:30:17

可能的窍门是不使用图形语句,而是直接更改当前图形。 这将更改活动图而不更改焦点。 通常,我会执行以下操作:

function change_current_figure(h)
set(0,'CurrentFigure',h)

然后,需要将所有Figure(h)语句更改为change_curent_figure(h)。

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

应该注意的是,这仅在已经创建图形的情况下有效。 如果要定期创建新图形,则可以将图形创建为代码的前几行,保存句柄,进行处理,然后绘制到图形上。 这个例子会起作用。 请注意,drawow命令将刷新事件缓冲区,确保已绘制所有图形。

我看过2007年至2010年的这项工作,虽然我没有理由怀疑它们不支持最新版本或更早的版本,但我不确定。

fig1=figure;
fig2=figure;
drawnow;
[a b]=do_complex_processing;
change_current_figure(fig1)
plot(a);
change_current_figure(fig2)
plot(b);
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册