8 Stimmen

R: Erstellung eines einfachen Kommandozeilen-Plottools/Erfassung von Ereignissen beim Schließen von Fenstern

Ich versuche, R in einem Skript zu verwenden, das als einfaches Befehlszeilentool fungieren soll. D.h. der Benutzer gibt eine csv-Datei ein und erhält ein Diagramm. Ich kann R gut erreichen und den Plot durch verschiedene temporäre Datei-Machinationen anzeigen, aber ich habe eine Straßensperre getroffen. Ich kann nicht herausfinden, wie ich R dazu bringe, weiterzulaufen, bis der Benutzer das Fenster schließt.

Wenn ich plotte und das Programm beende, verschwindet der Plot sofort. Wenn ich plotte und eine Art Endlosschleife verwende, kann der Benutzer den Plot nicht schließen; er muss ihn mit einem Interrupt beenden, was mir nicht gefällt. Ich sehe, dass es eine getGraphicsEvent-Funktion gibt, aber sie behauptet, dass das Gerät nicht unterstützt wird (X11). Jedenfalls scheint sie kein onClose-Ereignis zu unterstützen, sondern nur onMouseDown.

Haben Sie eine Idee, wie man das Problem lösen kann?

edit: Danke an Dirk für den Rat, die tk-Schnittstelle zu testen. Hier ist mein Testcode, der funktioniert:

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)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X