require(tcltk) || stop("tcltk support is absent") require(ctest) local({ dialog.t.test <- function(){ tt <- tktoplevel() tkwm.title(tt,"t test") x.entry <- tkentry(tt, textvariable=xvar) y.entry <- tkentry(tt, textvariable=yvar) alt <- tclVar("two.sided") done <- tclVar(0) eqvar <- tclVar(0) reset <- function() { tclvalue(xvar)<-"" tclvalue(yvar)<-"" tclvalue(alt)<-"two.sided" tclvalue(eqvar)<-"0" } reset.but <- tkbutton(tt, text="Reset", command=reset) submit.but <- tkbutton(tt, text="submit", command=function()tclvalue(done)<-1) build <- function() { ## notice that tclvalue() is correct here, since it is the ## string representation of xvar and yvar that is being ## displayed in the entry fields x <- parse(text=tclvalue(xvar))[[1]] y <- parse(text=tclvalue(yvar))[[1]] a <- tclvalue(alt) vv <- as.logical(tclObj(eqvar)) substitute(t.test(x,y,alternative=a,var.equal=vv)) } var.cbut <- tkcheckbutton(tt,text="Equal variance", variable=eqvar) alt.rbuts <- tkframe(tt) tkpack(tklabel(alt.rbuts, text="Alternative")) for ( i in c("two.sided", "less", "greater")){ tmp<-tkradiobutton(alt.rbuts, text=i, variable=alt, value=i) tkpack(tmp,anchor="w") } tkgrid(tklabel(tt,text="t-test"),columnspan=2) tkgrid(tklabel(tt,text="x variable"), x.entry) tkgrid(tklabel(tt,text="y variable"), y.entry) tkgrid(var.cbut, alt.rbuts) tkgrid(submit.but, reset.but) if (tclvalue(alt)=="") tclvalue(alt)<-"two.sided" ## capture destroy (e.g. from window controls ## otherwise the tkwait hangs with nowhere to go tkbind(tt, "", function()tclvalue(done)<-2) tkwait.variable(done) if(tclvalue(done)=="2") stop("aborted") tkdestroy(tt) cmd <- build() cat("### Command executed via Tk ###\n") cat(deparse(build()),sep="\n") cat("### -----\n") eval.parent(cmd) } cat("******************************************************\n", "The source for this demo can be found in the file:\n", file.path(system.file(package = "tcltk"), "demo", "tkttest.R"), "\n******************************************************\n") data(airquality) xvar <- tclVar("Ozone[Month==5]") yvar <- tclVar("Ozone[Month==8]") with(airquality, dialog.t.test()) })