Tk - Wydarzenia

Zdarzenia w najprostszej formie obsługiwane są za pomocą poleceń. Prostym przykładem obsługi zdarzeń jest obsługa zdarzeń za pomocą przycisku i jest pokazana poniżej -

#!/usr/bin/wish

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

Po uruchomieniu powyższego programu otrzymamy następujące dane wyjściowe -

Poniżej przedstawiono prosty program do wyświetlania zdarzenia animacji tekstu opóźnienia -

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

Po uruchomieniu programu otrzymamy w animowany sposób następujące dane wyjściowe -

Wydarzenie po opóźnieniu

Poniżej przedstawiono składnię zdarzenia po opóźnieniu -

after milliseconds number command

Poniżej przedstawiono prosty program do pokazania zdarzenia po opóźnieniu -

#!/usr/bin/wish

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

Po uruchomieniu programu po jednej sekundzie otrzymamy następujący wynik -

Możesz anulować zdarzenie za pomocą polecenia po anulowaniu, jak pokazano poniżej -

#!/usr/bin/wish

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

Wiązanie wydarzeń

Składnia powiązania zdarzeń jest pokazana poniżej -

bind arguments

Przykład zdarzeń klawiaturowych

#!/usr/bin/wish

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

Kiedy uruchomimy program i naciśniemy literę X, otrzymamy następujący wynik -

Key Pressed: X

Przykład zdarzeń myszy

#!/usr/bin/wish

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

Po uruchomieniu programu i naciśnięciu lewego przycisku myszy otrzymamy dane wyjściowe podobne do poniższego -

Button 1 Pressed : 89 90

Łączenie zdarzeń z przykładem przycisku

#!/usr/bin/wish

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

Po uruchomieniu programu i naciśnięciu klawisza enter otrzymamy następujący wynik -

Event triggered