[R] Fwd: tcltk: click and return table cell index

Dalthorp, Daniel ddalthorp at usgs.gov
Sat May 7 01:35:24 CEST 2016


Thanks, John.

The trouble with that solution is that it gives the index for where the
cursor was before clicking rather than the cell that was clicked. The
solution is that the <Button-1> binding gives the x, y pixel coordinates of
the click to the callback, and those just need to be translated to cell
index via tkindex ( My (almost) solution gives the pixel coordinates of the
mouse click. There is a function that converts the coords to cell index,
but I was having trouble figuring out the format of parameters, but the
following works:

tcl(table1, "index", as.tclObj(paste0("@",x, ",", y)))

I.e., to retrieve the index of the cell that is clicked on:

# create table
tt<-tktoplevel()
tclRequire("Tktable")
table1<-tkwidget(tt,"table",rows=3,cols=3)
tkgrid(table1)

tkbind(table1, "<Button-1>", function(x, y){
  cellIndex<-tcl(table1, "index", as.tclObj(paste0("@",x, ",", y)))
  print(tclvalue(cellIndex))
})

Thanks again!

-Dan


On Sat, Apr 30, 2016 at 6:43 AM, Fox, John <jfox at mcmaster.ca> wrote:

> Dear Daniel,
>
> Try
>
> tkbind(table1, "<Button-1>", function(){
>      res <- try(tclvalue(tkindex(table1, "active")), silent=TRUE)
>    if (inherits(res, "try-error")) print (NULL)
>    else print(res)
> })
>
> I put in the calls to print() so that you could see how it works.
>
> I hope this helps,
>  John
>
> -----------------------------
> John Fox, Professor
> McMaster University
> Hamilton, Ontario
> Canada L8S 4M4
> Web: socserv.mcmaster.ca/jfox
>
>
> > -----Original Message-----
> > From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of
> Dalthorp,
> > Daniel
> > Sent: April 29, 2016 1:42 PM
> > To: r-help at R-project.org (r-help at r-project.org) <r-help at r-project.org>
> > Subject: [R] tcltk: click and return table cell index
> >
> > I'm struggling mightily with what should be a simple task...when a user
> clicks
> > on a cell in a tcltk table widget, I need to know which cell was clicked.
> >
> > One idea that gives a cryptic error:
> > tkbind(table1, "<Button-1>", function(x, y){
> >   tcl(table1, "index", x, y)
> > }
> >
> > # x, y give pixel coordinates; "index" should give cell coordinates, but
> format
> > must be correct
> >
> > I get an error message:
> >
> > wrong # args: should be ".25.1 index <index> ?row|col?".
> >
> > To which I respond, "Yes, I know I have the format wrong, but how can I
> make
> > sense of THAT?"
> >
> > Does anyone know a simple fix?
> >
> > Much appreciated!
> >
> > -Dan
> >
> > --
> > Dan Dalthorp, PhD
> > USGS Forest and Rangeland Ecosystem Science Center Forest Sciences Lab,
> Rm
> > 189
> > 3200 SW Jefferson Way
> > Corvallis, OR 97331
> > ph: 541-750-0953
> > ddalthorp at usgs.gov
> >
> >       [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> > 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.
>



-- 
Dan Dalthorp, PhD
USGS Forest and Rangeland Ecosystem Science Center
Forest Sciences Lab, Rm 189
3200 SW Jefferson Way
Corvallis, OR 97331
ph: 541-750-0953
ddalthorp at usgs.gov




-- 
Dan Dalthorp, PhD
USGS Forest and Rangeland Ecosystem Science Center
Forest Sciences Lab, Rm 189
3200 SW Jefferson Way
Corvallis, OR 97331
ph: 541-750-0953
ddalthorp at usgs.gov

	[[alternative HTML version deleted]]



More information about the R-help mailing list