Можно ли использовать GUI с littler?

Я хочу написать небольшой скрипт с использованием простого графического интерфейса Rscript или же littler, В примере я использую gWidget2RGtk2,

Например, helloworld.R

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

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

visible(W) <- TRUE

Это хорошо работает, если он запускается в сеансе R, но при запуске из оболочки появляется ошибка:

Error in UseMethod(".gwindow") : 
no applicable method for '.gwindow' applied to an object of class "NULL"

В случае графики я знаю, что требуется X11() перед использованием plot(),

Возможно ли исправить этот скрипт, чтобы разрешить рендеринг виджетов из оболочки?

(Мне нужно запустить скрипт только на машине с 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.

1 ответ

Решение

Да, я делал это в прошлом. Вы должны убедиться, что у вас есть цикл событий GUI, чтобы поддерживать приложение в ожидании.

Другие вопросы по тегам