5

我熟悉matlab,但对r相对较新。我有一个 r 脚本,它产生许多不同的图形绘图窗口,并且在每个窗口之间需要一些时间。当它运行时,我倾向于处理其他事情。问题是每次生成一个新的图形窗口时,它都会窃取焦点,将键盘输入重定向到我正在做的事情之外。r 中是否有办法在生成图形图时防止焦点窃取?

我到处搜索,但没有找到任何对此的参考。我在linux中工作。

非常感谢任何帮助。

谢谢

4

3 回答 3

3

仅在 Windows 上:尝试将 abringToTop(-1)放入您的函数中:

z <- function() {
  plot(1:3)
  bringToTop(-1)
}
z()

它会暂时窃取焦点,然后返回。

Windows 上的另一种策略:

z <-  function(){
    windows(restoreConsole=TRUE)
    plot(1)
}
z()

我这里还在想...

于 2013-05-31T19:21:51.117 回答
2

如果您在制作绘图时对做其他事情更感兴趣,那么我建议您打开一个 pdf 设备,以便所有绘图在后台转到一个 pdf 文件,并且不会干扰您正在做的任何其他事情。然后,当您准备好查看绘图时,您只需打开 pdf 文件并查看绘图(您可以通过这种方式轻松返回到以前的绘图)。

于 2013-05-31T20:15:45.753 回答
1

如果wmctrl安装在您的系统上,您可以通过重新定义这样的plot函数来避免失去焦点:

plot <- function(...) {
  graphics::plot(...)
  system("wmctrl -a :ACTIVE:")
}

它似乎工作得很好,至少在通量盒窗口管理器中。我尝试了不同的场景,例如在调用之前的长时间计算期间切换到不同的窗口plot,并打开多个绘图。

.Rprofile如果您希望它持续存在,请将其放入您的。

于 2013-06-01T01:19:04.100 回答