2010-06-17 13 views
8

Estoy tratando de usar R dentro de una secuencia de comandos que actuará como una herramienta de trazado de línea de comando simple. Es decir. las tuberías de usuario en un archivo csv y obtienen una trama. Puedo llegar a R fine y hacer que la trama se muestre a través de varias maquinaciones de archivos temporales, pero me he topado con una barricada. No puedo entender cómo hacer que R siga funcionando hasta que los usuarios cierren la ventana.R: construyendo una herramienta de trazado de línea de comando simple/capturando eventos de cerrar ventana

Si trazo y salgo, la trama desaparece inmediatamente. Si trazo y uso algún tipo de ciclo infinito, el usuario no puede cerrar la trama; él debe salir usando una interrupción que no me gusta. Veo que hay una función getGraphicsEvent, pero afirma que el dispositivo no es compatible (X11). De todos modos, no parece ser compatible con un evento onClose, solo en MouseDown.

¿Alguna idea sobre cómo solucionar esto?

editar: Gracias a Dirk por los consejos para ver la interfaz de tk. Aquí está mi código de prueba que funciona:

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) 

Respuesta

5

Es necesario algo con un bucle de eventos distinto --- y la mejor solución portátiles confiar en el (ya incluido) tcltk paquete. Comience con sus demos.

El caso más simple puede ser

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

que aparece un cuadro de lo que necesita para reconocer proceder.

Cuestiones relacionadas