Tk - Eventos

Los eventos en su forma más simple se manejan con la ayuda de comandos. Un ejemplo simple para el manejo de eventos es el manejo de eventos con el botón y se muestra a continuación:

#!/usr/bin/wish

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

Cuando ejecutamos el programa anterior, obtendremos el siguiente resultado:

A continuación se muestra un programa simple para mostrar el evento de animación de texto de retraso:

#!/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
}

Cuando ejecutamos el programa, obtendremos el siguiente resultado de forma animada:

Evento tras retraso

A continuación se muestra la sintaxis de evento después de retraso:

after milliseconds number command

A continuación se muestra un programa simple para mostrar después del evento de demora:

#!/usr/bin/wish

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

Cuando ejecutamos el programa, obtendremos el siguiente resultado después de un segundo:

Puede cancelar un evento usando el comando after cancel como se muestra a continuación:

#!/usr/bin/wish

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

Enlace de eventos

La sintaxis para el enlace de eventos es la que se muestra a continuación:

bind arguments

Ejemplo de eventos de teclado

#!/usr/bin/wish

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

Cuando ejecutamos el programa y presionamos una letra X, obtendremos el siguiente resultado:

Key Pressed: X

Ejemplo de eventos de mouse

#!/usr/bin/wish

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

Cuando ejecutamos el programa y presionamos el botón izquierdo del mouse, obtendremos una salida similar a la siguiente:

Button 1 Pressed : 89 90

Ejemplo de vinculación de eventos con botón

#!/usr/bin/wish

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

Cuando ejecutamos el programa y presionamos enter, obtendremos el siguiente resultado:

Event triggered