Dear Peter, As you can see from the expression, I didn't use integer division, nor did I round() or floor(). Here's my original example, using a monospaced font:
> library(tcltk) > top <- tktoplevel() > textWindow <- tktext(top, bg="white", height=20, width=80, wrap="none", + font=tkfont.create(family="courier", size=10)) > tkgrid(textWindow, sticky="news") <Tcl> > tkgrid.rowconfigure(top, 0, weight=1) <Tcl> > tkgrid.columnconfigure(top, 0, weight=1) <Tcl> > tkcget(textWindow, width=NULL) <Tcl> 80 > tkwinfo("width", textWindow$ID) <Tcl> 646 > > (as.numeric(tkwinfo("width", textWindow$ID)) + - 2*as.numeric(tkcget(textWindow, borderwidth=NULL)) - 4) / + as.numeric(tkfont.measure(tkcget(textWindow, font=NULL), "0")) [1] 79.75 > > (as.numeric(tkwinfo("width", textWindow$ID)) + - 2*as.numeric(tkcget(textWindow, borderwidth=NULL)) - 2) / + as.numeric(tkfont.measure(tkcget(textWindow, font=NULL), "0")) [1] 80 I believe that the right answer is 80, and this appears correct visually, confirmed by typing in the window. My object was to be able to adjust R output to the width of the widget, and I can now do this (actually, Brian's approach also worked well enough for me). Thank you again for your help. John -------------------------------- John Fox Department of Sociology McMaster University Hamilton, Ontario Canada L8S 4M4 905-525-9140x23604 http://socserv.mcmaster.ca/jfox -------------------------------- > -----Original Message----- > From: Peter Dalgaard [mailto:[EMAIL PROTECTED] > Sent: Monday, February 28, 2005 11:27 AM > To: John Fox > Cc: 'Peter Dalgaard'; r-devel@stat.math.ethz.ch > Subject: Re: [Rd] Getting width of Tk text widget via tcltk > > "John Fox" <[EMAIL PROTECTED]> writes: > > > Dear Peter, > > > > (as.numeric(tkwinfo("width", .output$ID)) > > - 2*as.numeric(tkcget(.output, borderwidth=NULL)) - 2)/ > > as.numeric(tkfont.measure(tkcget(.output, font=NULL), "0")) > > > > (for the text widget .output) appears to do the trick (note, > > subtracting 2 rather than 4). > > Hmm, that's odd. I needed the 4. Beware that Tcl does integer > division (%/%). Did you round() or floor() the result? > > -- > O__ ---- Peter Dalgaard Blegdamsvej 3 > c/ /'_ --- Dept. of Biostatistics 2200 Cph. N > (*) \(*) -- University of Copenhagen Denmark Ph: > (+45) 35327918 > ~~~~~~~~~~ - ([EMAIL PROTECTED]) FAX: > (+45) 35327907 ______________________________________________ R-devel@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-devel