Re: [Rd] Getting width of Tk text widget via tcltk

From: Peter Dalgaard <p.dalgaard_at_biostat.ku.dk>
Date: Tue 01 Mar 2005 - 02:39:26 EST

Prof Brian Ripley <ripley@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@biostat.ku.dk)             FAX: (+45) 35327907

______________________________________________
R-devel@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Received on Tue Mar 01 02:56:54 2005

This archive was generated by hypermail 2.1.8 : Fri 18 Mar 2005 - 09:03:00 EST