我熟悉matlab,但对r相对较新。我有一个 r 脚本,它产生许多不同的图形绘图窗口,并且在每个窗口之间需要一些时间。当它运行时,我倾向于处理其他事情。问题是每次生成一个新的图形窗口时,它都会窃取焦点,将键盘输入重定向到我正在做的事情之外。r 中是否有办法在生成图形图时防止焦点窃取?
我到处搜索,但没有找到任何对此的参考。我在linux中工作。
非常感谢任何帮助。
谢谢
我熟悉matlab,但对r相对较新。我有一个 r 脚本,它产生许多不同的图形绘图窗口,并且在每个窗口之间需要一些时间。当它运行时,我倾向于处理其他事情。问题是每次生成一个新的图形窗口时,它都会窃取焦点,将键盘输入重定向到我正在做的事情之外。r 中是否有办法在生成图形图时防止焦点窃取?
我到处搜索,但没有找到任何对此的参考。我在linux中工作。
非常感谢任何帮助。
谢谢
仅在 Windows 上:尝试将 abringToTop(-1)
放入您的函数中:
z <- function() {
plot(1:3)
bringToTop(-1)
}
z()
它会暂时窃取焦点,然后返回。
Windows 上的另一种策略:
z <- function(){
windows(restoreConsole=TRUE)
plot(1)
}
z()
我这里还在想...
如果您在制作绘图时对做其他事情更感兴趣,那么我建议您打开一个 pdf 设备,以便所有绘图在后台转到一个 pdf 文件,并且不会干扰您正在做的任何其他事情。然后,当您准备好查看绘图时,您只需打开 pdf 文件并查看绘图(您可以通过这种方式轻松返回到以前的绘图)。
如果wmctrl
安装在您的系统上,您可以通过重新定义这样的plot
函数来避免失去焦点:
plot <- function(...) {
graphics::plot(...)
system("wmctrl -a :ACTIVE:")
}
它似乎工作得很好,至少在通量盒窗口管理器中。我尝试了不同的场景,例如在调用之前的长时间计算期间切换到不同的窗口plot
,并打开多个绘图。
.Rprofile
如果您希望它持续存在,请将其放入您的。