label .l -text "A label with a long text string to test auto-wrapping" pack .l -fill x bind .l <Configure> [list %W configure -wraplength %w]Then resize the toplevel window. You have to make sure that the label is packed/gridded to fill available space.Of course, this simplified version ignores things like padding and compound images, so here's a more complete example:
proc label:wrap {W w} {
set px [$W cget -padx]
if { [catch {$W cget -compound} side] } {
set wl [expr {$w - (2 * $px)}]
} else {
switch -- $side {
left -
right {
set image [$W cget -image]
if { [string length $image] } {
set iw [image width $image]
} else {
set iw 0
}
set wl [expr {$w - (3 * $px) - $iw}]
}
default {
set wl [expr {$w - (2 * $px)}]
}
}
}
$W configure -wraplength $wl
}
pack propagate . 0
set image [image create photo]
$image put red -to 0 0 16 16
label .l \
-bg white \
-text "A label with a long text string to test auto-wrapping" \
-image $image \
-compound left \
-anchor w \
-justify l \
-padx 10
pack .l -fill x
bind .l <Configure> [list label:wrap %W %w]MGS [2003/04/20] - I have combined the above code with that in label selection and created a package which you can find in the Links section at Mark G. Saye.
JNC [2010/06/03] - On TkChat, emiliano came up with this solution which seems to work fine:
bind $label <Configure> { %W configure -wraplength [expr { %w - 4 }] }RLE (2011-06-08) There is a crucial bit of information about the above code that was omitted:The -4 above (as your -9) is crucial. Without it the text becomes invisible for some combinations of text width and ttk::label width.2011-06-08 clt:wraplength and dynamically-sized widgets


