Учебники

Tk — События

События в простейшем виде обрабатываются с помощью команд. Простой пример обработки события — обработка события кнопкой и показан ниже:

#!/usr/bin/wish

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

Когда мы запустим вышеупомянутую программу, мы получим следующий вывод —

Пример события

Простая программа для отображения события задержки текстовой анимации показана ниже —

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

Когда мы запустим программу, мы получим следующий вывод в анимированном виде —

Пример события3

Событие после задержки

Синтаксис для события после задержки показан ниже —

after milliseconds number command

Простая программа для отображения после события задержки показана ниже —

#!/usr/bin/wish

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

Когда мы запустим программу, через одну секунду мы получим следующий вывод:

Пример события2

Вы можете отменить событие, используя команду после отмены, как показано ниже —

#!/usr/bin/wish

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

Привязка событий

Синтаксис для привязки событий, как показано ниже —

bind arguments 

Пример событий клавиатуры

#!/usr/bin/wish

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

Когда мы запустим программу и нажмем букву X, мы получим следующий вывод:

Key Pressed: X 

Пример событий мыши

#!/usr/bin/wish

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

Когда мы запустим программу и нажмем левую кнопку мыши, мы получим вывод, подобный следующему:

Button 1 Pressed : 89 90 

Пример привязки событий с помощью кнопки

#!/usr/bin/wish

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

Когда мы запустим программу и нажмем ввод, мы получим следующий вывод: