R:构建一个简单的命令行绘图工具/捕获窗口关闭事件

时间:2010-06-17 15:34:05

标签: r plot x11

我正在尝试在一个脚本中使用R,它将充当一个简单的命令行绘图工具。即用户管道在csv文件中,他们得到一个情节。我可以得到R罚款并通过各种临时文件阴谋来显示情节,但我遇到了障碍。在用户关闭窗口之前,我无法弄清楚如何让R继续运行。

如果我绘制并退出,则绘图立即消失。如果我绘制并使用某种无限循环,用户就无法关闭该图;他必须使用我不喜欢的中断退出。我看到有一个getGraphicsEvent函数,但它声称不支持该设备(X11)。无论如何,它似乎实际上不支持onClose事件,只有onMouseDown。

关于如何解决这个问题的任何想法?

编辑:感谢Dirk提供了查看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 个答案:

答案 0 :(得分:5)

您需要具有独特事件循环的东西---最好的可移植解决方案是依赖于(已包含的)tcltk包。从它的演示开始。

最简单的情况可能是

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

弹出一个框,你需要确认继续。