X7ROOT File Manager
Current Path:
/usr/share/tk8.5/demos
usr
/
share
/
tk8.5
/
demos
/
📁
..
📄
README
(2.03 KB)
📄
anilabel.tcl
(6.51 KB)
📄
aniwave.tcl
(3.41 KB)
📄
arrow.tcl
(7.8 KB)
📄
bind.tcl
(2.87 KB)
📄
bitmap.tcl
(1.38 KB)
📄
browse
(1.72 KB)
📄
button.tcl
(1.47 KB)
📄
check.tcl
(2.22 KB)
📄
clrpick.tcl
(1.4 KB)
📄
colors.tcl
(4.88 KB)
📄
combo.tcl
(1.94 KB)
📄
cscroll.tcl
(3.31 KB)
📄
ctext.tcl
(4.76 KB)
📄
dialog1.tcl
(660 B)
📄
dialog2.tcl
(613 B)
📄
en.msg
(3.8 KB)
📄
entry1.tcl
(1.35 KB)
📄
entry2.tcl
(2.06 KB)
📄
entry3.tcl
(5.95 KB)
📄
filebox.tcl
(2.2 KB)
📄
floor.tcl
(77.24 KB)
📄
form.tcl
(1.02 KB)
📄
goldberg.tcl
(55.23 KB)
📄
hello
(512 B)
📄
hscale.tcl
(1.46 KB)
📄
icon.tcl
(2.01 KB)
📄
image1.tcl
(1002 B)
📄
image2.tcl
(3.28 KB)
📁
images
📄
items.tcl
(9.5 KB)
📄
ixset
(7.91 KB)
📄
knightstour.tcl
(8.38 KB)
📄
label.tcl
(1.29 KB)
📄
labelframe.tcl
(1.8 KB)
📄
license.terms
(2.16 KB)
📄
mclist.tcl
(3.89 KB)
📄
menu.tcl
(6.57 KB)
📄
menubu.tcl
(4.37 KB)
📄
msgbox.tcl
(1.98 KB)
📄
nl.msg
(6.61 KB)
📄
paned1.tcl
(1.08 KB)
📄
paned2.tcl
(2.18 KB)
📄
pendulum.tcl
(7.46 KB)
📄
plot.tcl
(2.69 KB)
📄
puzzle.tcl
(2.54 KB)
📄
radio.tcl
(2.69 KB)
📄
rmt
(5.22 KB)
📄
rolodex
(8.11 KB)
📄
ruler.tcl
(5.09 KB)
📄
sayings.tcl
(2.21 KB)
📄
search.tcl
(4.29 KB)
📄
spin.tcl
(1.78 KB)
📄
states.tcl
(1.63 KB)
📄
style.tcl
(6.78 KB)
📄
tclIndex
(4.25 KB)
📄
tcolor
(10.99 KB)
📄
text.tcl
(3.34 KB)
📄
textpeer.tcl
(2.13 KB)
📄
timer
(1.09 KB)
📄
toolbar.tcl
(3.19 KB)
📄
tree.tcl
(3.29 KB)
📄
ttkbut.tcl
(3.34 KB)
📄
ttkmenu.tcl
(2.35 KB)
📄
ttknote.tcl
(2.41 KB)
📄
ttkpane.tcl
(3.95 KB)
📄
ttkprogress.tcl
(1.52 KB)
📄
ttkscale.tcl
(1.39 KB)
📄
twind.tcl
(10.57 KB)
📄
unicodeout.tcl
(3.45 KB)
📄
vscale.tcl
(1.44 KB)
📄
widget
(22.83 KB)
Editing: aniwave.tcl
# aniwave.tcl -- # # This demonstration script illustrates how to adjust canvas item # coordinates in a way that does something fairly similar to waveform # display. if {![info exists widgetDemo]} { error "This script should be run from the \"widget\" demo." } package require Tk set w .aniwave catch {destroy $w} toplevel $w wm title $w "Animated Wave Demonstration" wm iconname $w "aniwave" positionWindow $w label $w.msg -font $font -wraplength 4i -justify left -text "This demonstration contains a canvas widget with a line item inside it. The animation routines work by adjusting the coordinates list of the line; a trace on a variable is used so updates to the variable result in a change of position of the line." pack $w.msg -side top ## See Code / Dismiss buttons set btns [addSeeDismiss $w.buttons $w] pack $btns -side bottom -fill x # Create a canvas large enough to hold the wave. In fact, the wave # sticks off both sides of the canvas to prevent visual glitches. pack [canvas $w.c -width 300 -height 200 -background black] -padx 10 -pady 10 -expand yes # Ensure that this this is an array array set animationCallbacks {} # Creates a coordinates list of a wave. This code does a very sketchy # job and relies on Tk's line smoothing to make things look better. set waveCoords {} for {set x -10} {$x<=300} {incr x 5} { lappend waveCoords $x 100 } lappend waveCoords $x 0 [incr x 5] 200 # Create a smoothed line and arrange for its coordinates to be the # contents of the variable waveCoords. $w.c create line $waveCoords -tags wave -width 1 -fill green -smooth 1 proc waveCoordsTracer {w args} { global waveCoords # Actual visual update will wait until we have finished # processing; Tk does that for us automatically. $w.c coords wave $waveCoords } trace add variable waveCoords write [list waveCoordsTracer $w] # Basic motion handler. Given what direction the wave is travelling # in, it advances the y coordinates in the coordinate-list one step in # that direction. proc basicMotion {} { global waveCoords direction set oc $waveCoords for {set i 1} {$i<[llength $oc]} {incr i 2} { if {$direction eq "left"} { lset waveCoords $i [lindex $oc \ [expr {$i+2>[llength $oc] ? 1 : $i+2}]] } else { lset waveCoords $i \ [lindex $oc [expr {$i-2<0 ? "end" : $i-2}]] } } } # Oscillation handler. This detects whether to reverse the direction # of the wave by checking to see if the peak of the wave has moved off # the screen (whose size we know already.) proc reverser {} { global waveCoords direction if {[lindex $waveCoords 1] < 10} { set direction "right" } elseif {[lindex $waveCoords end] < 10} { set direction "left" } } # Main animation "loop". This calls the two procedures that handle the # movement repeatedly by scheduling asynchronous calls back to itself # using the [after] command. This procedure is the fundamental basis # for all animated effect handling in Tk. proc move {} { basicMotion reverser # Theoretically 100 frames-per-second (==10ms between frames) global animationCallbacks set animationCallbacks(simpleWave) [after 10 move] } # Initialise our remaining animation variables set direction "left" set animateAfterCallback {} # Arrange for the animation loop to stop when the canvas is deleted bind $w.c <Destroy> { after cancel $animationCallbacks(simpleWave) unset animationCallbacks(simpleWave) } # Start the animation processing move
Upload File
Create Folder