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