【发布时间】:2017-10-26 19:36:27
【问题描述】:
我对 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 控制台”加载“R Commander”时:
library(Rcmdr)
“R Commander”GUI 成为活动窗口。我想“R Commander”GUI 使用 tcltk2 库:“R Commander”窗口如何从“R 控制台”窃取焦点?
【问题讨论】:
-
能否提供示例代码。另外,您可能想阅读stackoverflow.com/help/how-to-ask
-
您知道,通常情况下,您完全受制于操作系统的实际操作和接收击键?尽管有一些方法可以添加提示,但主要取决于用户哪个主窗口获得焦点,而不是应用程序。 (你需要知道
tcltk2库的人,这与 Tcl 完全不同,因此超出了我的专业知识。) -
Mathieu,我编辑了文本并提供了示例代码:有帮助吗?
-
Donal,我知道操作系统会影响结果。我尝试使用
tkfocus()和tkraised(),但没有成功。使用tcl("wm", "attributes", base, topmost=TRUE),我的 GUI 窗口始终位于顶部,但它没有聚焦:我必须单击它才能激活。既然 Rcommander 完成了这项工作,我也想做同样的事情。
标签: r user-interface focus tk