R中的活动窗口

时间:2017-10-26 19:36:27

标签: r user-interface focus tk

我在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控制台'窃取焦点?

1 个答案:

答案 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') ")
}