bind.tcl
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:3k
源码类别:

通讯编程

开发平台:

Visual C++

  1. # bind.tcl --
  2. #
  3. # This demonstration script creates a text widget with bindings set
  4. # up for hypertext-like effects.
  5. #
  6. # RCS: @(#) $Id: bind.tcl,v 1.2 1998/09/14 18:23:26 stanton Exp $
  7. if {![info exists widgetDemo]} {
  8.     error "This script should be run from the "widget" demo."
  9. }
  10. set w .bind
  11. catch {destroy $w}
  12. toplevel $w
  13. wm title $w "Text Demonstration - Tag Bindings"
  14. wm iconname $w "bind"
  15. positionWindow $w
  16. frame $w.buttons
  17. pack $w.buttons -side bottom -fill x -pady 2m
  18. button $w.buttons.dismiss -text Dismiss -command "destroy $w"
  19. button $w.buttons.code -text "See Code" -command "showCode $w"
  20. pack $w.buttons.dismiss $w.buttons.code -side left -expand 1
  21. text $w.text -yscrollcommand "$w.scroll set" -setgrid true 
  22. -width 60 -height 24 -font $font -wrap word
  23. scrollbar $w.scroll -command "$w.text yview"
  24. pack $w.scroll -side right -fill y
  25. pack $w.text -expand yes -fill both
  26. # Set up display styles.
  27. if {[winfo depth $w] > 1} {
  28.     set bold "-background #43ce80 -relief raised -borderwidth 1"
  29.     set normal "-background {} -relief flat"
  30. } else {
  31.     set bold "-foreground white -background black"
  32.     set normal "-foreground {} -background {}"
  33. }
  34. # Add text to widget.
  35. $w.text insert 0.0 {
  36. The same tag mechanism that controls display styles in text widgets can also be used to associate Tcl commands with regions of text, so that mouse or keyboard actions on the text cause particular Tcl commands to be invoked.  For example, in the text below the descriptions of the canvas demonstrations have been tagged.  When you move the mouse over a demo description the description lights up, and when you press button 1 over a description then that particular demonstration is invoked.
  37. }
  38. $w.text insert end 
  39. {1. Samples of all the different types of items that can be created in canvas widgets.} d1
  40. $w.text insert end nn
  41. $w.text insert end 
  42. {2. A simple two-dimensional plot that allows you to adjust the positions of the data points.} d2
  43. $w.text insert end nn
  44. $w.text insert end 
  45. {3. Anchoring and justification modes for text items.} d3
  46. $w.text insert end nn
  47. $w.text insert end 
  48. {4. An editor for arrow-head shapes for line items.} d4
  49. $w.text insert end nn
  50. $w.text insert end 
  51. {5. A ruler with facilities for editing tab stops.} d5
  52. $w.text insert end nn
  53. $w.text insert end 
  54. {6. A grid that demonstrates how canvases can be scrolled.} d6
  55. # Create bindings for tags.
  56. foreach tag {d1 d2 d3 d4 d5 d6} {
  57.     $w.text tag bind $tag <Any-Enter> "$w.text tag configure $tag $bold"
  58.     $w.text tag bind $tag <Any-Leave> "$w.text tag configure $tag $normal"
  59. }
  60. $w.text tag bind d1 <1> {source [file join $tk_library demos items.tcl]}
  61. $w.text tag bind d2 <1> {source [file join $tk_library demos plot.tcl]}
  62. $w.text tag bind d3 <1> {source [file join $tk_library demos ctext.tcl]}
  63. $w.text tag bind d4 <1> {source [file join $tk_library demos arrow.tcl]}
  64. $w.text tag bind d5 <1> {source [file join $tk_library demos ruler.tcl]}
  65. $w.text tag bind d6 <1> {source [file join $tk_library demos cscroll.tcl]}
  66. $w.text mark set insert 0.0
  67. $w.text configure -state disabled