R: создание простого окна инструмента/Получения графического изображения командной строки закрывает события

Я пытаюсь использовать R в рамках сценария, который будет действовать как простой графический инструмент командной строки. Т.е. пользователь передает по каналу в файле CSV, и они получают график. Я могу добраться до штрафа R и получить график отобразиться посредством различных временных махинаций файла, но я поразил контрольно-пропускной пункт. Я не могу выяснить, как заставить R продолжать бежать, пока пользователи не закрывают окно.

Если я вывожусь на печать и выхожу, график сразу исчезает. Если я вывожу на печать и использую некоторый бесконечный цикл, пользователь не может закрыть график; он должен выйти при помощи прерывания, которое я не люблю. Я вижу, что существует функция getGraphicsEvent, но она утверждает, что устройство не поддерживается (X11). Так или иначе это, кажется, на самом деле не поддерживает onClose событие, только onMouseDown.

Какие-либо идеи о том, как решить это?

править: Благодаря Кортику для совета проверить интерфейс tk. Вот мой тестовый код, который работает:

require(tcltk)
library(tkrplot)

## function to display plot, called by tkrplot and embedded in a window
plotIt<-function(){ plot(x=1:10, y=1:10) }
## create top level window
tt<-tktoplevel()
## variable to wait on like a condition variable, to be set by event handler
done <- tclVar(0)
## bind to the window destroy event, set done variable when destroyed
tkbind(tt,"<Destroy>",function() tclvalue(done) <- 1)
## Have tkrplot embed the plot window, then realize it with tkgrid
tkgrid(tkrplot(tt,plotIt))
## wait until done is true
tkwait.variable(done)
8
задан Dirk Eddelbuettel 18 June 2010 в 12:32
поделиться

1 ответ

Вам нужно что-то с отдельным циклом событий --- и лучшее переносимое решение - полагаться на (уже включенный) пакет tcltk . Начнем с его демонстраций.

Самым простым случаем может быть

> library(tcltk)
> tk_messageBox(message="Press a key")

, когда появляется окно, которое необходимо подтвердить, чтобы продолжить.

5
ответ дан 5 December 2019 в 23:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: