【问题标题】:Running a GUI written in R via script通过脚本运行用 R 编写的 GUI
【发布时间】:2018-01-11 16:05:10
【问题描述】:

我使用 R 中的 tcltk 包编写了一个小型图形用户界面。我现在想让用户通过运行脚本来启动界面,而无需使用 RStudio 或命令行,只需双击脚本图标 (在 Windows 中)。但是我在这样做时遇到了一些问题。

使用 Rscript.exe 运行它会启动一个非交互式 R 会话,我想我需要一个交互式会话。所以我尝试了:

echo source("GUI.R") | R.exe --ess --vanilla

GUI.R 文件中的 R 命令 interactive() 现在确实返回 TRUE,但是 GUI 窗口仍然只弹出并在之后立即关闭。 之后暂停脚本没有帮助。

有谁知道如何正确地做到这一点?或者是否有可能?

【问题讨论】:

  • 为什么不在 Windows 桌面上运行可双击的批处理文件?
  • 这就是我想要做的,但窗口会立即关闭。

标签: r user-interface interactive


【解决方案1】:

我知道这是一条旧消息,但我不得不回复。很长一段时间以来,我一直在寻找类似问题的解决方案,但没有一个有效。问题是 RScript.exe、Rcmd.exe 等不是交互式的,您对此无能为力。

我在使用 Rscript.exe 运行的文件(我正在使用 tlctk2)的最后使用 tkwait.window() 解决了这个问题。

确保没有 if(interactive()) 例程,因为 Rscript.exe 不是交互式的,因此将 FALSE 返回到 interactive()。

结果简单而有效。您使用 tcl/tk GUI 创建的窗口将保持启动并运行,直到使用 tkdestroy() 或仅通过关闭窗口将其销毁。

#usage
require(tcltk2)
#Your script
MyMainWindow<<-tktoplevel()
#Your script
tkwait.window(MyMainWindow)
#END

【讨论】:

    猜你喜欢
    • 2013-10-25
    • 2023-03-27
    • 1970-01-01
    • 2011-10-20
    • 1970-01-01
    • 2018-10-30
    • 1970-01-01
    • 2022-10-21
    • 1970-01-01
    相关资源
    最近更新 更多