Tk - Eventi

Gli eventi nella loro forma più semplice vengono gestiti con l'aiuto di comandi. Un semplice esempio per la gestione degli eventi è la gestione degli eventi con il pulsante ed è mostrato di seguito:

#!/usr/bin/wish

proc myEvent { } {
   puts "Event triggered"
}
pack [button .myButton1  -text "Button 1"   -command myEvent]

Quando eseguiamo il programma sopra, otterremo il seguente output:

Di seguito è mostrato un semplice programma per mostrare l'evento di animazione del testo di ritardo:

#!/usr/bin/wish

proc delay {} {
   for {set j 0} {$j < 100000} {incr j} {} } label .myLabel -text "Hello................" -width 25 pack .myLabel set str "Hello................" for {set i [string length $str]} {$i > -2} {set i [expr $i-1]} {
   .myLabel configure -text [string range $str 0 $i]
   update
   delay
}

Quando eseguiamo il programma, otterremo il seguente output in modo animato:

Evento dopo ritardo

La sintassi per l'evento dopo il ritardo è mostrata di seguito:

after milliseconds number command

Di seguito è mostrato un semplice programma da mostrare dopo un evento di ritardo:

#!/usr/bin/wish

proc addText {} {
   label .myLabel -text "Hello................" -width 25
   pack .myLabel
}
after 1000 addText

Quando eseguiamo il programma, dopo un secondo otterremo il seguente output:

È possibile annullare un evento utilizzando il comando after cancel come mostrato di seguito:

#!/usr/bin/wish

proc addText {} {
   label .myLabel -text "Hello................" -width 25
   pack .myLabel
}
after 1000 addText
after cancel addText

Associazione evento

La sintassi per l'associazione di eventi è la seguente:

bind arguments

Esempio di eventi da tastiera

#!/usr/bin/wish

bind .  {puts "Key Pressed: %K "}

Quando eseguiamo il programma e premiamo una lettera X, otterremo il seguente output:

Key Pressed: X

Esempio di eventi del mouse

#!/usr/bin/wish

bind .  {puts "Button %b Pressed : %x %y "}

Quando eseguiamo il programma e premiamo il tasto sinistro del mouse, otterremo un output simile al seguente:

Button 1 Pressed : 89 90

Esempio di collegamento di eventi con pulsante

#!/usr/bin/wish

proc myEvent { } {
   puts "Event triggered"
}
pack [button .myButton1  -text "Button 1"   -command myEvent]
bind .  ".myButton1 invoke"

Quando eseguiamo il programma e premiamo Invio, otterremo il seguente output:

Event triggered