最简单形式的事件通过命令来处理。事件处理的一个简单示例是使用按钮进行事件处理,如下所示-
#!/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
键盘事件
#!/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"
当无涯教程运行程序并按Enter时,将获得以下输出-
Event triggered
参考链接
https://www.learnfk.com/tcl-tk/tk-events.html
标签:bin,事件处理,myLabel,wish,无涯,usr,text,事件,Tk From: https://blog.51cto.com/u_14033984/8532144