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
}
当我们运行程序时,我们将以动画方式得到以下输出 −
延迟后的事件
延迟后事件的语法如下所示 −
after milliseconds number command
延迟事件后显示的简单程序如下所示 −
#!/usr/bin/wish
proc addText {} {
label .myLabel -text "Hello................" -width 25
pack .myLabel
}
after 1000 addText
当我们运行程序时,一秒后我们将得到以下输出 −
您可以使用 after cancel 命令取消事件,如下所示 −
#!/usr/bin/wish
proc addText {} {
label .myLabel -text "Hello................" -width 25
pack .myLabel
}
after 1000 addText
after cancel addText
事件绑定
事件绑定的语法如下所示 −
bind arguments
Keyboard Events Example
#!/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"
当我们运行程序并按回车键时,我们将得到以下输出 −
Event triggered

