无涯教程-Tk - 事件处理

82 阅读1分钟

最简单形式的事件通过命令来处理。事件处理的一个简单示例是使用按钮进行事件处理,如下所示-

#!/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</span><span class="pun">]}</span><span class="pln"> </span><span class="pun">{</span><span class="pln">i > -2} {set i [expr i</span><span class="pun">-</span><span class="lit">1</span><span class="pun">]}</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> </span><span class="pun">.</span><span class="pln">myLabel configure </span><span class="pun">-</span><span class="pln">text </span><span class="pun">[</span><span class="kwd">string</span><span class="pln"> 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

参考链接

www.learnfk.com/tcl-tk/tk-e…