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

通讯编程

开发平台:

Visual C++

  1. # image2.tcl --
  2. #
  3. # This demonstration script creates a simple collection of widgets
  4. # that allow you to select and view images in a Tk label.
  5. #
  6. # RCS: @(#) $Id: image2.tcl,v 1.6 2002/08/12 13:38:48 dkf Exp $
  7. if {![info exists widgetDemo]} {
  8.     error "This script should be run from the "widget" demo."
  9. }
  10. # loadDir --
  11. # This procedure reloads the directory listbox from the directory
  12. # named in the demo's entry.
  13. #
  14. # Arguments:
  15. # w - Name of the toplevel window of the demo.
  16. proc loadDir w {
  17.     global dirName
  18.     $w.f.list delete 0 end
  19.     foreach i [lsort [glob -directory $dirName *]] {
  20. $w.f.list insert end [file tail $i]
  21.     }
  22. }
  23. # selectAndLoadDir --
  24. # This procedure pops up a dialog to ask for a directory to load into
  25. # the listobx and (if the user presses OK) reloads the directory
  26. # listbox from the directory named in the demo's entry.
  27. #
  28. # Arguments:
  29. # w - Name of the toplevel window of the demo.
  30. proc selectAndLoadDir w {
  31.     global dirName
  32.     set dir [tk_chooseDirectory -initialdir $dirName -parent $w -mustexist 1]
  33.     if {[string length $dir] != 0} {
  34. set dirName $dir
  35. loadDir $w
  36.     }
  37. }
  38. # loadImage --
  39. # Given the name of the toplevel window of the demo and the mouse
  40. # position, extracts the directory entry under the mouse and loads
  41. # that file into a photo image for display.
  42. #
  43. # Arguments:
  44. # w - Name of the toplevel window of the demo.
  45. # x, y- Mouse position within the listbox.
  46. proc loadImage {w x y} {
  47.     global dirName
  48.     set file [file join $dirName [$w.f.list get @$x,$y]]
  49.     image2a configure -file $file
  50. }
  51. set w .image2
  52. catch {destroy $w}
  53. toplevel $w
  54. wm title $w "Image Demonstration #2"
  55. wm iconname $w "Image2"
  56. positionWindow $w
  57. label $w.msg -font $font -wraplength 4i -justify left -text "This demonstration allows you to view images using a Tk "photo" image.  First type a directory name in the listbox, then type Return to load the directory into the listbox.  Then double-click on a file name in the listbox to see that image."
  58. pack $w.msg -side top
  59. frame $w.buttons
  60. pack $w.buttons -side bottom -fill x -pady 2m
  61. button $w.buttons.dismiss -text Dismiss -command "destroy $w"
  62. button $w.buttons.code -text "See Code" -command "showCode $w"
  63. pack $w.buttons.dismiss $w.buttons.code -side left -expand 1
  64. frame $w.mid
  65. pack $w.mid -fill both -expand 1
  66. labelframe $w.dir -text "Directory:"
  67. set dirName [file join $tk_library demos images]
  68. entry $w.dir.e -width 30 -textvariable dirName
  69. button $w.dir.b -pady 0 -padx 2m -text "Select Dir." 
  70. -command "selectAndLoadDir $w"
  71. bind $w.dir.e <Return> "loadDir $w"
  72. pack $w.dir.e -side left -fill both -padx 2m     -pady 2m -expand true
  73. pack $w.dir.b -side left -fill y    -padx {0 2m} -pady 2m
  74. labelframe $w.f -text "File:" -padx 2m -pady 2m
  75. listbox $w.f.list -width 20 -height 10 -yscrollcommand "$w.f.scroll set"
  76. scrollbar $w.f.scroll -command "$w.f.list yview"
  77. pack $w.f.list $w.f.scroll -side left -fill y -expand 1
  78. $w.f.list insert 0 earth.gif earthris.gif teapot.ppm
  79. bind $w.f.list <Double-1> "loadImage $w %x %y"
  80. catch {image delete image2a}
  81. image create photo image2a
  82. labelframe $w.image -text "Image:"
  83. label $w.image.image -image image2a
  84. pack $w.image.image -padx 2m -pady 2m
  85. grid $w.dir -        -sticky ew -padx 1m -pady 1m -in $w.mid
  86. grid $w.f   $w.image -sticky nw -padx 1m -pady 1m -in $w.mid
  87. grid columnconfigure $w.mid 1 -weight 1