是否可以将 GUI 与 littler 一起使用?

Is possible to use GUI with littler?

我想使用 Rscriptlittler 编写带有简单 GUI 的小脚本。 在示例中我使用 gWidget2RGtk2.

例如,helloworld.R

#!/usr/bin/r
library(gWidgets2RGtk2)

W <- gwindow("Window", visible=FALSE)
L <- glabel("Hello World!", container=W)

visible(W) <- TRUE

如果它在 R 会话中 运行 时效果很好,但当它从 shell:

中 运行 时会出错
Error in UseMethod(".gwindow") : 
no applicable method for '.gwindow' applied to an object of class "NULL"

对于图形,我知道在使用前 X11() 是必需的 plot()

是否可以修复此脚本以允许从 shell 渲染小部件?

(我只需要 运行 linux 机器上的脚本)


编辑: 这是一个在 Linux 上运行良好的示例。 (包括在回答和评论中收到的建议。)

#!/usr/bin/r
require(RGtk2) # required for gtkMain()
require(gWidgets2) 
options(guiToolkit="RGtk2")

W <- gwindow("Window", visible=FALSE, 
  handler = function(h, ...) {
    gtkMainQuit() # stop main loop when windows is closed.
  }
)
L <- glabel("Hello Word!", container=W)
visible(W) <- TRUE

gtkMain() # start main loop to keep the script alive.

是的,我过去也这样做过。你必须确保你有一个 GUI 事件循环 运行 通过等待让应用程序保持活跃。