Hello! I need help in a menu in TCL-TK. I have 3 functions, one function (function1) that sum 2 numbers and return the result. Other function(function2) that print a number. And the other (function3), is a menu that has several options. I need use the result that returns the option that calls to function1 to call the function2. tkadd(openRecentMenu,"command",label="Function1", command=function() function1(a,b)) tkadd(openRecentMenu,"command",label="Function2", command=function() function2(d)) I want that the value "d" is the return value of the function1, but I don?t know as I can asign the value to "d" Next, I show the 3 functions. Thank you very much, A greetings function1<-function(a,b){ return(a+b); } function2<-function(a){ print(a); } function3<-function(a,b){ require(tcltk) tt <- tktoplevel() topMenu <- tkmenu(tt) tkconfigure(tt,menu=topMenu) fileMenu <- tkmenu(topMenu,tearoff=FALSE) openRecentMenu <- tkmenu(topMenu,tearoff=FALSE) tkadd(openRecentMenu,"command",label="Function1", command=function() function1(a,b)) tkadd(openRecentMenu,"command",label="Function2", command=function() function2(d)) tkadd(fileMenu,"cascade",label="Functions",menu=openRecentMenu) tkadd(fileMenu,"command",label="Quit",command=function() tkdestroy(tt)) tkadd(topMenu,"cascade",label="File",menu=fileMenu) tkfocus(tt) } -- View this message in context: http://www.nabble.com/MENU-TCL-TK-tp16128790p16128790.html Sent from the R help mailing list archive at Nabble.com.
Make sure d has been created (see first line marked ##) and then use d <<- function(a, b) as shown in second line marked ##. See ?"<<-" Another solution is to use the proto package. The home page http://rproto.googlecode.com has pointers to examples of using gWidgets with proto and the same idea would apply to tcltk or any GUI with callbacks. Just plain environments would work too (in fact proto objects are environments). Here is function3 redone: function3<-function(a,b){ require(tcltk) d <- 0 ## tt <- tktoplevel() topMenu <- tkmenu(tt) tkconfigure(tt,menu=topMenu) fileMenu <- tkmenu(topMenu,tearoff=FALSE) openRecentMenu <- tkmenu(topMenu,tearoff=FALSE) tkadd(openRecentMenu,"command",label="Function1", command=function() d <<- function1(a,b)) ## tkadd(openRecentMenu,"command",label="Function2", command=function() function2(d)) tkadd(fileMenu,"cascade",label="Functions",menu=openRecentMenu) tkadd(fileMenu,"command",label="Quit",command=function() tkdestroy(tt)) tkadd(topMenu,"cascade",label="File",menu=fileMenu) tkfocus(tt) } On Tue, Mar 18, 2008 at 3:23 PM, ermimi <ermimi_ at hotmail.com> wrote:> > Hello! > > I need help in a menu in TCL-TK. I have 3 functions, one function > (function1) that sum 2 numbers and return the result. Other > function(function2) that print a number. And the other (function3), is a > menu that has several options. I need use the result that returns the option > that calls to function1 to call the function2. > > tkadd(openRecentMenu,"command",label="Function1", > command=function() function1(a,b)) > > > tkadd(openRecentMenu,"command",label="Function2", > command=function() function2(d)) > > I want that the value "d" is the return value of the function1, but I don?t > know as I can asign the value to "d" > > Next, I show the 3 functions. > > Thank you very much, > > A greetings > > function1<-function(a,b){ > return(a+b); > } > > function2<-function(a){ > print(a); > } > > function3<-function(a,b){ > require(tcltk) > tt <- tktoplevel() > topMenu <- tkmenu(tt) > tkconfigure(tt,menu=topMenu) > fileMenu <- tkmenu(topMenu,tearoff=FALSE) > openRecentMenu <- tkmenu(topMenu,tearoff=FALSE) > tkadd(openRecentMenu,"command",label="Function1", > command=function() function1(a,b)) > tkadd(openRecentMenu,"command",label="Function2", > command=function() function2(d)) > tkadd(fileMenu,"cascade",label="Functions",menu=openRecentMenu) > tkadd(fileMenu,"command",label="Quit",command=function() tkdestroy(tt)) > tkadd(topMenu,"cascade",label="File",menu=fileMenu) > tkfocus(tt) > } > -- > View this message in context: http://www.nabble.com/MENU-TCL-TK-tp16128790p16128790.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >
My doubts were resolved, thank you Gabor!!!! ermimi wrote:> > Hello! > > I need help in a menu in TCL-TK. I have 3 functions, one function > (function1) that sum 2 numbers and return the result. Other > function(function2) that print a number. And the other (function3), is a > menu that has several options. I need use the result that returns the > option that calls to function1 to call the function2. > > tkadd(openRecentMenu,"command",label="Function1", > command=function() function1(a,b)) > > > tkadd(openRecentMenu,"command",label="Function2", > command=function() function2(d)) > > I want that the value "d" is the return value of the function1, but I > don?t know as I can asign the value to "d" > > Next, I show the 3 functions. > > Thank you very much, > > A greetings > > function1<-function(a,b){ > return(a+b); > } > > function2<-function(a){ > print(a); > } > > function3<-function(a,b){ > require(tcltk) > tt <- tktoplevel() > topMenu <- tkmenu(tt) > tkconfigure(tt,menu=topMenu) > fileMenu <- tkmenu(topMenu,tearoff=FALSE) > openRecentMenu <- tkmenu(topMenu,tearoff=FALSE) > tkadd(openRecentMenu,"command",label="Function1", > command=function() function1(a,b)) > tkadd(openRecentMenu,"command",label="Function2", > command=function() function2(d)) > tkadd(fileMenu,"cascade",label="Functions",menu=openRecentMenu) > tkadd(fileMenu,"command",label="Quit",command=function() tkdestroy(tt)) > tkadd(topMenu,"cascade",label="File",menu=fileMenu) > tkfocus(tt) > } >-- View this message in context: http://www.nabble.com/MENU-TCL-TK-tp16128790p16131042.html Sent from the R help mailing list archive at Nabble.com.