Tk - 事件



事件在其最簡單的形式下是藉助命令處理的。一個簡單的事件處理示例是使用按鈕的事件處理,如下所示:

#!/usr/bin/wish

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

執行以上程式後,我們將得到以下輸出:

Event Example

一個簡單的程式,用於顯示延遲文字動畫事件,如下所示:

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

執行程式後,我們將以動畫方式獲得以下輸出:

Event Example3

延遲後的事件

延遲後事件的語法如下所示:

after milliseconds number command

一個簡單的程式,用於顯示延遲後事件,如下所示:

#!/usr/bin/wish

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

執行程式後,我們將在一秒鐘後得到以下輸出:

Event Example2

您可以使用 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
廣告
© . All rights reserved.