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

使用 Tcl 来组织桌面

 2008-11-13 08:29:26 来源:WEB开发网   
核心提示: 对于这个 Tcl/Tk 程序,可以在很多方面进行改进,使用 Tcl 来组织桌面(5),添加创建新文章的按钮或将所有的文章备份到存档的按钮,这些都是值得进行的改进,并将其保存为 calc.tcl,使用 chmod 将其权限修改为可执行,并且 Tcl/Tk 让您可以轻松地完成这些工作,您还可以

对于这个 Tcl/Tk 程序,可以在很多方面进行改进。添加创建新文章的按钮或将所有的文章备份到存档的按钮,这些都是值得进行的改进,并且 Tcl/Tk 让您可以轻松地完成这些工作。您还可以设置首选编辑器、xterm 和浏览器。您可以随意地对其进行实验,绝不要将这个桌面扩展仅用于为 IBM 撰写文章:可以对其进行修改,以启动一个编程环境或 Web 技术环境。

一个 50 行代码的科学计算器

现在,您将通过一个更加复杂的 Tcl GUI 程序来组织桌面:通过仅 50 行代码编写的一个科学计算器(请参见清单 2)。这个计算器可以对通过键盘或 GUI 按钮输入的表达式进行计算。如果您输入一个无效的表达式,其文本将变为红色。与清单 1 中的程序一样,您可以将这段代码从屏幕搜集到一个文件,并将其保存为 calc.tcl,使用 chmod 将其权限修改为可执行,然后运行该程序。

清单 2. 50 行代码的计算器

#!/usr/bin/wish -f
# 1 -- How should it look?
set cflag 0; set nextkey 0
wm title . "50-Line Calculator"
wm resizable . 0 0
grid [entry .display -textvariable expression -justify right] -columnspan 6
focus .display
bind .display <Return> equals; bind .display <KP_Enter> equals
foreach row {
 {7 8 9 + - sin(}
 {4 5 6 * / cos(}
 {1 2 3 ( ) tan(}
 {C 0 . = Pi log(}
 } {
 foreach key $row {
  switch -- $key {
      C    {set string {set cflag 1; set expression ""}}
      Pi   {set string pi}      
      =    {set string equals}
      default {set string "press $key"}
  }
  lappend keys [button .[incr nextkey] -text $key -command $string]
 }
 eval grid $keys -sticky we
 set keys [list]
}
# 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
}
proc pi {} {
 if $::cflag {set ::expression ""}
 lappend ::expression "3.14159265"
 .display icursor end; set ::cflag 0
}
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
}

上一页  1 2 3 4 5 6 7  下一页

Tags:使用 Tcl 组织

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