MGS - Here's a nasty-ish hack to make labels with vertical text. Not rotated text, just with the letters stacked on top of each other. For spaces, you need to insert two newlines.
if 0 { label .l -text "Vertical\n\nLabel" -wraplength 1 pack .l }
Make sure the label is packed/gridded so as not to expand or fill horizontally.
RS Another way is:
if 0 { label .l2 -text [join [split "Vertical text" ""] \n] }
This way is slower and alters the actual text contained in the label rather than just how it wraps, though. -FW - RS: Well, it processes a copy of the text, which is perfectly normal in Tcl - but needs no workaround for spaces... ;-)
Mike Tuxford thinks both of those are clever and would come in handy for use with Animated Vertical Tabs
ulis, 2003-01-23. Torsten in c.l.t. asked for a vertical label package. Here it is.
Vlabel package
if {![info exists ::vlabel::version]} \ { namespace eval ::vlabel \ { namespace export vlabel package require Tk variable version 0.1 package provide Vlabel $version proc vlabel {w args} \ { label $w rename $w ::vlabel::_$w interp alias {} ::$w {} ::vlabel::vdispatch $w if {[llength $args] %2 == 1} \ { return -code error "value for \"[lindex $args end]\" missing" } if {$args != ""} { eval vconfig $w $args } return $w } proc vtext {text} { join [split $text {}] \n } proc vdispatch {w {cmd ""} args} \ { switch -glob -- $cmd \ { con* { uplevel 1 ::vlabel::vconfig $w $args } default { uplevel 1 ::vlabel::_$w $cmd $args } } } proc vconfig {w args} \ { set l [llength $args] if {$l == 0} { return [eval ::vlabel::_$w config $args] } set n 0 foreach {key value} $args \ { incr n if {$n == $l} { return [::vlabel::_$w config $key] } switch -glob -- $key \ { -text \ { ::vlabel::_$w config -text [vtext $value] } default \ { ::vlabel::_$w config $key $value } } incr n } } } }
Demo
package require Vlabel namespace import ::vlabel::vlabel pack [vlabel .l -text vlabel -bg gold]
escargo 23 Jan 2004 - Wrapped some example code with if 0 { so that I could use wish-reaper to collect and test out the code.