Reputation: 2854
I try to call a simple function with a Tcl widget dialog - put x, y and z and sum them up, displaying the result in the console, with a messagebox ("done!") - But I'm missing something with the variables and didn't manage to do the message box..
mydialog <- function(){
myfun <- function(x,y,z) x+y+z
xvar <- tclVar("1")
yvar <- tclVar("2")
zvar <- tclVar("3")
tt <- tktoplevel()
tkwm.title(tt,"MYTEST")
x.entry <- tkentry(tt, textvariable=xvar)
y.entry <- tkentry(tt, textvariable=yvar)
z.entry <- tkentry(tt, textvariable=zvar)
reset <- function()
{
tclvalue(xvar)<-""
tclvalue(yvar)<-""
tclvalue(zvar)<-""
}
reset.but <- tkbutton(tt, text="Reset", command=reset)
x <- tclvalue(xvar)
y <- tclvalue(yvar)
z <- tclvalue(zvar)
submit.but <- tkbutton(tt, text="submit", command=function() substitute(myfun(x,y,z)))
tkgrid(tklabel(tt,text="MYTEST"),columnspan=2)
tkgrid(tklabel(tt,text="x variable"), x.entry)
tkgrid(tklabel(tt,text="y variable"), y.entry)
tkgrid(tklabel(tt,text="z variable"), z.entry)
tkgrid(submit.but, reset.but)
}
mydialog()
Upvotes: 3
Views: 2491
Reputation: 18440
I do not see where your myfun
is defined. Here is your code slightly altered
mydialog <- function(){
xvar <- tclVar("1")
yvar <- tclVar("2")
zvar <- tclVar("3")
tt <- tktoplevel()
tkwm.title(tt,"MYTEST")
x.entry <- tkentry(tt, textvariable=xvar)
y.entry <- tkentry(tt, textvariable=yvar)
z.entry <- tkentry(tt, textvariable=zvar)
reset <- function()
{
tclvalue(xvar)<-""
tclvalue(yvar)<-""
tclvalue(zvar)<-""
}
reset.but <- tkbutton(tt, text="Reset", command=reset)
submit <- function() {
x <- as.numeric(tclvalue(xvar))
y <- as.numeric(tclvalue(yvar))
z <- as.numeric(tclvalue(zvar))
print(x+y+z)
tkmessageBox(message="Done!")
#tkdestroy(tt)
}
submit.but <- tkbutton(tt, text="submit", command=submit)
tkgrid(tklabel(tt,text="MYTEST"),columnspan=2)
tkgrid(tklabel(tt,text="x variable"), x.entry)
tkgrid(tklabel(tt,text="y variable"), y.entry)
tkgrid(tklabel(tt,text="z variable"), z.entry)
tkgrid(submit.but, reset.but)
}
mydialog()
Upvotes: 3