我在Microsoft Windows中遇到R问题。
当我使用source('script_file')
从“R控制台”(Rgui)运行脚本,并且我的脚本创建了一个图形设备时,我使用bringToTop()
在两个窗口之间切换焦点:
dev.new() # create the graphic device window, and this new window takes the focus
...
bringToTop(-1) # give back the focus to the 'R console' window
...
bringToTop(2) # give the focus to the graphic device window
当我的R脚本通过 tcltk2 库创建GUI窗口时,我无法使GUI窗口聚焦:“R控制台”仍然是活动窗口,我必须单击GUI窗口激活它。
library(tcltk2)
...
win1 <- tktoplevel()
tktitle(win1) <- "GUI window"
tkwm.geometry(win1, '300x200+100+100')
请注意,如果以前的脚本在Linux中运行,则TK顶层窗口将成为焦点。
当我从'R console'加载'R Commander'时:
library(Rcmdr)
'R Commander'GUI成为活动窗口。我想'R Commander'GUI使用 tcltk2 库:'R Commander'窗口如何从'R控制台'窃取焦点?
答案 0 :(得分:0)
它不优雅,但有效:
info_sys <- Sys.info()
if (info_sys['sysname'] == 'Windows') {
shell("powershell -command [void] [System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic') ; [Microsoft.VisualBasic.Interaction]::AppActivate('GUI window') ")
}