[Rd] Getting width of Tk text widget via tcltk

Peter Dalgaard p.dalgaard at biostat.ku.dk
Mon Feb 28 16:39:26 CET 2005


Prof Brian Ripley <ripley at stats.ox.ac.uk> writes:


> > <Tcl> 743
> >
> > I could convert pixels to characters, but wonder whether I can get the
> > latter directly.
> 
> I suspect you may have some difficulty with the latter, even in a
> monospace font.  Notice that 486 is not a multiple of 80, and if that
> is actually 81, 743 is not a multiple of 6.
> 
> I was trying to do this with heights for a listbox a few days ago, and
> it seems that the line spacing is actually 1 pixel greater than is
> reported. Since you can resize to a non-integer number of lines I
> don't believe (and I tried to read the source code) that Tcl/Tk works
> internally with characters.

I think that's actually an issue that involves the window manager too.
I don't think all WMs know how to deal in integer number of
characters. 

Anyways, the following piece of Tcl seems to do the trick:

% expr ([winfo width .a] - 2 * [.a cget -borderwidth] - 4)/[font measure [.a cget -font] 0]
27

Converting to R is left as an exercise...

If I got it right then the point is that at either side of the window
you have by 1 pixel, n border pixels, and 1 spacer pixel before the
first character.

-- 
   O__  ---- Peter Dalgaard             Blegdamsvej 3  
  c/ /'_ --- Dept. of Biostatistics     2200 Cph. N   
 (*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)             FAX: (+45) 35327907



More information about the R-devel mailing list