Tcl/Tk 烹调书 - 使用画布


Part-II - 第 3 步: 过程定义。

下列过程的脚本很简单并且是自明的:


proc showName {c} {
global is1
$is1.country delete 0 end
$is1.country insert end $c

}

# given a country flash that in canvas

proc highLightCountry { w tn } {
 set old_colour [lindex [$w itemconfig $tn -fill] 4]
 
 $w itemconfigure $tn -fill yellow
 after 5000 "$w itemconfigure $tn -fill $old_colour; bell"

}
proc clearCanvas {w} {
	foreach id [$w  find all] {$w delete $id }
}


当用户在一个国家的边界内按下并释放鼠标左键的时候,调用过程 "showName" 来清除(0 到 end 删除第一个到最后一个字符) 在应用中的录入组件的内容并插入作为参数传递给过程的国家名字。

过程 "highLightCountry" 接受画布组件的名字和通过录入组件输入的标签作为参数。

使用组件命令来调用 "itemconfig" 动作;"itemconfig" 得到画布组件中给定项目的所有当前配置和它们的值的一个列表。从这个列表中检索出加了标签的项目的当前颜色并赋给 old_colour。向加了标签的区域(项目)填充黄色。5 秒钟之后,重设为 old_colour。

你当然可以通过把这个过程重写成时常的交替设置并休止(rest)旧的和新的颜色来使指名的国家闪烁。去做实验。

过程 clearCanvas 得到在画布中显示的所有项目的一个列表并删除它们。