Tcl-tk-tk-events

提供:Dev Guides
移動先:案内検索

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

プログラムを実行すると、1秒後に次の出力が得られます-

イベント例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"

プログラムを実行してEnterキーを押すと、次の出力が得られます-

Event triggered