19. Feb 2003 / [MSW]. ---- The question on [Ask, and it shall be given.] was how to allow people resizing windows to do this exactly, preferrably by a label which displays the exact dimensions on the window being resized: ''When a user resizes a toplevel window I want to get a continuous feedback about the window's dimensions, so that I am able to display that on a label and user can set the exact size. The problem with event bind is that it is fired at the end of the resizing operation.I want dimensions 'live' during resizing.'' Well, I digged some but could not find a fitting binding for use with [bind], nor the fitting protocol thing for use with ''[wm] protocol''. So I suggested to use a little panel instead, well, this is my shot at it. ---- [MSW](2005-02-26): ''Some grooming taken place.'' sizepanel now also allows setting of the x & y offset part of [[[wm] geometry], is wrapped up in its namespace, and allows multiple instances of itself (might be interesting for apps with multiple toplevel-windows -- I tested it with a sizepanel resizing a sizepanel resizing . ... Could still use a lot of grooming, keybindings... ---- namespace eval szpan { variable szwin 0 variable vals array set vals {} namespace export {sizepanel} proc sizepanel {toplvl} { variable szwin variable vals set top [toplevel .szpan[incr szwin]] wm title $top "Sizing $toplvl" foreach {minx miny} [wm minsize $toplvl] {} foreach {maxx maxy} [wm maxsize $toplvl] {} set maxXOffset [winfo screenwidth $toplvl] set maxYOffset [winfo screenheight $toplvl] scan [wm geometry $toplvl] {%dx%d+%d+%d} w h x y entry $top.w -textvar [namespace current]::vals($toplvl,width) -width 4 label $top.lw -text "Width : " -width 11 scale $top.sw -variable [namespace current]::vals($toplvl,width) -from $minx \ -to $maxx -orient h -showvalue 0 entry $top.h -textvar [namespace current]::vals($toplvl,height) -width 4 label $top.lh -text "Height : " -width 11 scale $top.sh -variable [namespace current]::vals($toplvl,height) -from $miny \ -to $maxy -orient h -showvalue 0 entry $top.x -textvar [namespace current]::vals($toplvl,xOffset) -width 4 label $top.lx -text "x-offset : " -width 11 scale $top.sx -variable [namespace current]::vals($toplvl,xOffset) -from 0 \ -to $maxXOffset -orient h -showvalue 0 entry $top.y -textvar [namespace current]::vals($toplvl,yOffset) -width 4 label $top.ly -text "y-offset : " -width 11 scale $top.sy -variable [namespace current]::vals($toplvl,yOffset) -from 0 \ -to $maxYOffset -orient h -showvalue 0 button $top.k -text "Done" -command \ "catch {array unset [namespace current]::vals $toplvl,*} ; destroy $top" grid $top.lw $top.w $top.sw grid $top.lh $top.h $top.sh grid $top.lx $top.x $top.sx grid $top.ly $top.y $top.sy grid $top.k -columnspan 3 set szpan::vals($toplvl,height) $h set szpan::vals($toplvl,width) $w set szpan::vals($toplvl,xOffset) $x set szpan::vals($toplvl,yOffset) $y if {![llength [trace vinfo szpan::vals]]} then { trace variable [namespace current]::vals w [namespace code sztrace] } } proc sztrace {var1 var2 op} { variable vals scan $var2 {%[^,],%s} win opt catch { wm geometry $win "$vals($win,width)x$vals($win,height)+$vals($win,xOffset)+$vals($win,yOffset)" } } } ---- Use with sizepanel , e.g. % szpan::sizepanel . ---- See also [sizeinfo]. ---- [MSW]: Both these solutions are not really what was asked for, but in the one way or another they both are satisfying I guess...