使用 Tcl 来组织桌面
2008-11-13 08:29:26 来源:WEB开发网计算器的功能
仅通过 3 个过程,就可以定义计算器所需的所有功能。请记住,在该程序运行时,操作集中在 display 小部件的内容上。当按下 = 键或 Enter 键时,expr 函数将对这些内容进行计算。
当按下大多数 GUI 按钮时,将使用 press 过程。其目的是将该按钮的名称文本添加到 display 和 expression 字符串的结尾处,而这个表达式将在以后进行计算。当设置了 cflag 时,将清除该表达式,为 next 表达式的输入和计算做准备:
# 2 -- What should it do?
proc press {key} {
if $::cflag {
set ::expression ""
if ![regexp {[0-9().]} $key] {set ::expression $::results}
.display configure -fg black
.display icursor end; set ::cflag 0
}
.display insert end $key
}
pi 过程将 pi 的值插入到 display 和 expression 变量:
proc pi {} {
if $::cflag {set ::expression ""}
lappend ::expression "3.14159265"
.display icursor end; set ::cflag 0
}
当按下 = 键或其中一个 Enter 键时,将执行 equals 过程。通过使用 Tcl/Tk 的功能强大的 expr 动词和完成计算任务的数学代码库,实现了对表达式的计算,并且将结果保存到了 results 变量。如果发生输入错误,如不匹配的括号,将通过 expr 抛出 catch 错误代码,并且将 display 的颜色设置为红色:
proc equals {} {
regsub {=.+} $::expression "" ::expression
if [catch {lappend ::expression =
[set ::results [expr
[string map {/ *1.0/} $::expression]]]}] {
.display configure -fg red
}
.display xview end; set ::cflag 1
}
根据 expr 动词的相关文档的显示,它可以处理许多其他的数学函数,如 asin、acos、atan、指数、地板函数等等。您可以使用键盘输入这些表达式,然后观察 expr 的工作,现在您已经有了足够的知识来修改该计算器代码,以添加支持这些函数的按钮。要了解更多的相关信息,请访问参考资料部分中列举的 Tcl/Tk 关键字。
纯 Tcl 桌面
许多人都沉迷于使用 Tcl/Tk 来编写 GUI 脚本的强大功能,他们已经编写出了各种纯 Tcl/Tk 的编辑器、浏览器、文件和桌面窗口管理器。参考资料部分中包括了其中部分内容的列表。
结束语
每一项勾画出现代世界美好生活的杰出发明的出现,都是因为有的人不满足于现状并且决定对其进行积极的改变。您可以通过技术来改进世界,通过编写脚本为工作站设计新的桌面并体会其中的乐趣,这可能会开启通往其他具有深远意义的观念的大门。祝您编写脚本愉快!
更多精彩
赞助商链接