Можно ли использовать 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, чтобы поддерживать приложение в ожидании.