Tk - Eventos

Os eventos em sua forma mais simples são tratados com a ajuda de comandos. Um exemplo simples de manipulação de eventos é a manipulação de eventos com botão e é mostrado abaixo -

#!/usr/bin/wish

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

Quando executarmos o programa acima, obteremos a seguinte saída -

Um programa simples para mostrar evento de animação de texto de atraso é mostrado abaixo -

#!/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 executarmos o programa, obteremos a seguinte saída de forma animada -

Evento após atraso

A sintaxe para evento após atraso é mostrada abaixo -

after milliseconds number command

Um programa simples para mostrar após o evento de atraso é mostrado abaixo -

#!/usr/bin/wish

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

Quando executamos o programa, obteremos a seguinte saída após um segundo -

Você pode cancelar um evento usando o comando after cancel conforme mostrado abaixo -

#!/usr/bin/wish

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

Vinculação de evento

A sintaxe para associação de eventos é mostrada abaixo -

bind arguments

Exemplo de eventos de teclado

#!/usr/bin/wish

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

Quando executamos o programa e pressionamos a letra X, obteremos a seguinte saída -

Key Pressed: X

Exemplo de eventos de mouse

#!/usr/bin/wish

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

Quando executamos o programa e pressionamos o botão esquerdo do mouse, obteremos uma saída semelhante à seguinte -

Button 1 Pressed : 89 90

Vinculando eventos com exemplo de botão

#!/usr/bin/wish

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

Quando executamos o programa e pressionamos enter, obteremos o seguinte resultado -

Event triggered