package require Img pack [label .x -text Unavailable -fg white] after idle set im [image create photo -format window -data .x] set w [image width $im] set h [image height $im] for {set y 1} {$y<$h} {incr y} { for {set x 1} {$x<$w} {incr x} { if {[$im get $x $y]=={255 255 255}} { $im put gray40 -to [expr {$x-1}] [expr {$y-1}] } } } .x config -image $imHowever, this does not reflect the -state of the button - more code is needed for that functionality.Come to think, this might be done in Tk core at the place where -disabledforeground is displayed, by rendering the text in white before, shifted by 1 pixel each in x,y directions; conditionally for Windows, or: for all platforms?
PT Tile does this for widgets with a disabled state and for themes that require this sort of effect (eg: winnative and xpnative - also alt IIRC)