** Summary ** '''text''' is one of the standard `[[[canvas]]` item types ** Getting Text Dimensions ** To get the dimensions of a text item, use `[[[canvas] bbox]`. Examples: [A Graph plotter]: ''''italic text''''** Demos ** from simple to complex: [canvashelp]: expanding/collapsing text item *** *** *** **** **`'' ====== [http://here.com/photo.gif|png|jpg]http://here.com/what.html%|%link name%|%[your heading2] ====== ''`** **** *** *** *** ** Rotated Text ** [Rotated canvas text]: [Rotate text on a canvas]: ** Text Items as textvariables ** [RS]: With the following few lines you can associate one (or any number of) text items to update by [trace]ing when a variable changes value: ====== proc canvas'text'update {canvas tag _var - -} { upvar $_var var $canvas itemconfig $tag -text $var } #---------------------- usage & demo code pack [canvas .c] .c create text 100 100 -tag vartext trace var testing w [list canvas'text'update .c vartext] set testing "hello, world!" ,# yet another way to say it... ====== The following variation packages both the definition and the implementation of the trace into the same command, differentiated by the number of arguments: ====== proc canvas'textvar {canvas tag _var args} { upvar 1 $_var var if { [llength $args] } { $canvas itemconfig $tag -text $var } else { uplevel 1 trace var $_var w \ [list [list canvas'textvar $canvas $tag]] } } canvas'textvar .c vartext testing set testing "hello again!" ====== ** Text item background ** Text items are on a transparent background. You can give them an opaque background by first creating the text, then determining its b(ounding )box, drawing a rect with equal `-fill` and `-outline`, and finally raising the text item again. Example, where this happens on demand when the user clicks on a text: ====== $canvas bind text <1> { %W create rect [%W bbox current] -fill white -outline white -tag bg %W lower bg text } $canvas bind text <3> {%W delete bg} ;# RS ====== <> Tk syntax help | Command | Graphics | Widget