WEB开发网
开发学院操作系统Linux/Unix 使用 Tcl 来组织桌面 阅读

使用 Tcl 来组织桌面

 2008-11-13 08:29:26 来源:WEB开发网   
核心提示: 计算器的功能仅通过 3 个过程,就可以定义计算器所需的所有功能,使用 Tcl 来组织桌面(7),请记住,在该程序运行时,您可以通过技术来改进世界,通过编写脚本为工作站设计新的桌面并体会其中的乐趣,操作集中在 display 小部件的内容上,当按下 = 键或 Enter 键时

计算器的功能

仅通过 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 的编辑器、浏览器、文件和桌面窗口管理器。参考资料部分中包括了其中部分内容的列表。

结束语

每一项勾画出现代世界美好生活的杰出发明的出现,都是因为有的人不满足于现状并且决定对其进行积极的改变。您可以通过技术来改进世界,通过编写脚本为工作站设计新的桌面并体会其中的乐趣,这可能会开启通往其他具有深远意义的观念的大门。祝您编写脚本愉快!

上一页  2 3 4 5 6 7 

Tags:使用 Tcl 组织

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接