[R-gui] copy graphs from tabbed notebook widget

as ming bbxxus at yahoo.com
Sun Jan 21 08:57:09 CET 2007


Hi, All:

I created several plots in R and associated them with
tabbed notebook widget (created from the
example on the R tcl/tk page 
http://www.sciviews.org/_rgui).  The plot itself is
created by tkrplot.
 What I'd llike to do is to save the current plot
associated with the active tab. I searched
online and couldn't get it done. Your help is well
appreciated!


I am attaching this example code from that website. 
Basically, when I click tab "B",
I want to save the corresponding plot. I used
"CopytoClipboard" button. But it always
copies the last plot, ie. tab Z's plot.

I guess I need handle the imglist as a list, but it
didn't allow me to do.

####### modified example code ############

library(tcltk)
library(tkrplot)
tclRequire("Iwidgets")

tt <- tktoplevel()
tkpack(tn <- tkwidget(tt, "iwidgets::tabnotebook"))
tkconfigure(tn,                         #
prettyfication taken from incrtcl
            tabpos="n",
            width=1050,
            height=850,
            angle=0,
            bevelamount=2,
            gap=2,
            margin=2,
            tabborders=0,
            tabbackground="white",
            background="lightgray",
            backdrop="lightgray")

nm <- LETTERS[1:26]
for (t in 1:length(nm)) {
    tbn <- tclvalue(tkadd(tn, label=nm[t]))
    tkpack(tbw <- .Tk.newwin(tbn))
    tkpack(fr <- tkframe(tbw))
    tkpack(lb <- tklabel(fr, text=paste("This is tab",
nm[t])))
    ID <- paste(tn$ID, evalq(num.subwin<-num.subwin+1,
tn$env), sep=".")
    win <- .Tk.newwin(ID)
    assign(ID, tbw, envir = tn$env)
    assign("parent", tn, envir = tbw$env)

    imglist <- tkrplot(fr,function() {
         X <- t + (1:20)
         plot(X)}, hscale= 1.5, vscale= 1.5)
    CopyToClip <- function()
   {
       tkrreplot(imglist)
   }
    copy.but <- tkbutton(tbw,text=paste("Copy to
Clipboard", nm[t]),command=CopyToClip)
    tkpack(imglist)
    tkpack(copy.but)    


    #list(tbw,fr,lb) # return all three in case you
need them later
}
tkbind(tt, "<Destroy>", function() tkdestroy(tn))
tkselect(tn, 0)



 
____________________________________________________________________________________
Cheap talk?



More information about the R-SIG-GUI mailing list