[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