text is one of the standard
[canvas] item types
Getting Text Dimensions edit
To get the dimensions of a text item, use
[canvas bbox]. Examples:
- A Graph plotter
from simple to complex:
- canvashelp
- expanding/collapsing text item
Rotated Text edit
- Rotated canvas text
- Rotate text on a canvas
Text Items as textvariables edit
RS: With the following few lines you can associate one (or any number of) text items to update by
traceing 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 edit
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