事件是最簡(jiǎn)單的形式與命令的交互處理過(guò)程。一個(gè)簡(jiǎn)單的例子,事件處理-按鈕事件,如下圖所示。
#!/usr/bin/wish proc myEvent { } { puts "Event triggered" } pack [button .myButton1 -text "Button 1" -command myEvent]
當(dāng)我們運(yùn)行上面的程序,會(huì)得到下面的輸出。
一個(gè)簡(jiǎn)單的程序,以顯示延遲的文字動(dòng)畫(huà)事件如下所示。
#!/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 }
當(dāng)我們運(yùn)行程序,會(huì)得到動(dòng)畫(huà)如下面的輸出。
延后事件的語(yǔ)法如下所示。
after milliseconds number command
一個(gè)簡(jiǎn)單的程序,以顯示如下圖所示延遲事件之后。
#!/usr/bin/wish proc addText {} { label .myLabel -text "Hello................" -width 25 pack .myLabel } after 1000 addText
當(dāng)我們運(yùn)行程序,將在一秒鐘后得到以下輸出。
可以在使用后,取消命令,如下圖所示取消的事件。
#!/usr/bin/wish proc addText {} { label .myLabel -text "Hello................" -width 25 pack .myLabel } after 1000 addText after cancel addText
事件綁定的語(yǔ)法如下所示。
bind arguments
#!/usr/bin/wish bind . {puts "Key Pressed: %K "}
當(dāng)我們運(yùn)行程序,并按下一個(gè)字母X,會(huì)得到下面的輸出。
Key Pressed: X
#!/usr/bin/wish bind . {puts "Button %b Pressed : %x %y "}
當(dāng)我們運(yùn)行程序,并按下鼠標(biāo)左鍵,會(huì)得到類似以下的輸出。
Button 1 Pressed : 89 90
#!/usr/bin/wish proc myEvent { } { puts "Event triggered" } pack [button .myButton1 -text "Button 1" -command myEvent] bind . ".myButton1 invoke"
當(dāng)我們運(yùn)行程序,然后按回車,會(huì)得到下面的輸出。
Event triggered