scanvas

 

ulis, 24-10-2005. Un mini megawidget qui incorpore des ascenseurs à un widget canvas.

  scanvas .sc -bg beige -width 200 -height 200
  pack .sc -fill both -expand 1

Pourquoi

Pour ne pas refaire cent fois la même chose.


Comment

Les ascenseurs sont incorporés. Point.


Le mini megawidget

  if {[info exists ::scanvas::version]} { return }

  namespace eval scanvas \
  {
  # ##########################
  #
  # package scanvas
    variable version 1.0
  #
  #   crée un widget canvas avec ses ascenseurs
  #
  # --------------------------
  # (C) 2005, ulis
  # licence NOL (No Obligation Licence)
  # --------------------------
  # usage :
  #
  #   package require scanvas
  #   scanvas .sc -bg beige -width 200 -height 200
  #   .sc create ...
  #   pack .sc -fill both -expand 1
  #   .sc config -scrollregion [.sc bbox all]
  #
  # ##########################

    package require Tk
    package provide scanvas $version

    namespace export scanvas

    proc scanvas {w args} \
    {
      frame $w
      canvas $w.scanvas_c \
        -xscrollc [list $w.scanvas_hs set] \
        -yscrollc [list $w.scanvas_vs set]
      scrollbar $w.scanvas_hs -orient horizontal \
        -command [list $w.scanvas_c xview]
      scrollbar $w.scanvas_vs -orient vertical \
        -command [list $w.scanvas_c yview]
      grid $w.scanvas_c $w.scanvas_vs -sticky nsew
      grid $w.scanvas_hs -sticky ew
      grid rowconfigure $w 0 -weight 1
      grid columnconfigure $w 0 -weight 1
      rename $w ::scanvas::_$w
      interp alias {} ::$w {} ::$w.scanvas_c
      if {$args != ""} \
      {
        uplevel 1 $w.scanvas_c config $args
      }
      return $w
    }
  }

  namespace import ::scanvas::scanvas

L'installation

Installer le package scrolled qui comprend stext, sframe et scanvas.


Le test

  package require scanvas
  scanvas .sc -bg beige -width 200 -height 200
  pack .sc -fill both -expand 1
  .sc create text 0 0 -anchor nw \
    -text [info body ::scanvas::scanvas]
  .sc config -scrollregion [.sc bbox all]

Voir aussi


Discussion


Catégorie Exemple | Catégorie paquet