2012-08-08 2 views
3

Tcl 위젯 대화 상자로 간단한 함수를 호출하려고합니다. x, y, z를 넣고 합쳐서 결과를 콘솔에 표시하고 messagebox ("done!") - 하지만 변수 뭔가를 누락하고 메시지 상자를 수행하지 못했다 ..R Tcl/Tk로 간단한 대화 상자

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() 

답변

2

당신의 myfun이 정의 어디 표시되지 않습니다. 다음은 코드가 약간 변경된 것입니다.

+0

고마워요. 나는 나의 게시를 편집했다, 거기서 나는 myfun의 def를 붙여 넣는 것을 잊었다. (그 사이에 대체 (.)가이 장소에서 완전하게 틀렸다는 것을 배웠다 ..) – Kay

+0

Welcome! 어쩌면'do.call (myfun, list (x, y, z))'가 당신이 찾고 있던 것일 수도 있습니다. –