Rev 44727 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
require(tcltk) || stop("tcltk support is absent")require(stats)local({have_ttk <- as.character(tcl("info", "tclversion")) >= "8.5"if(have_ttk) {tkbutton <- ttkbuttontkcheckbutton <- ttkcheckbuttontkentry <- ttkentrytkframe <- ttkframetklabel <- ttklabeltkradiobutton <- ttkradiobutton}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 fieldsx <- 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 gotkbind(tt, "<Destroy>", 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")xvar <- tclVar("Ozone[Month==5]")yvar <- tclVar("Ozone[Month==8]")with(airquality, dialog.t.test())})