R: создание простого инструмента построения графиков командной строки / Захват событий закрытия окна - PullRequest
8 голосов
/ 17 июня 2010

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

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

Есть идеи, как решить эту проблему?

edit: Спасибо Дирку за совет проверить интерфейс 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)

1 Ответ

5 голосов
/ 17 июня 2010

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

Простейшим случаем может быть

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

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

...