Tcl/Tk的一些笔记

Tcl/Tk是一种轻量级的图形界面开发工具,适用于Unix、Mac和Windows平台,尤其适合快速开发。它包含在许多脚本语言中,如Perl和Python,但不是默认安装的。通过Visual Tcl,开发者可以获得类似Visual Basic的开发体验。Tcl语言没有明确的数据类型,主要使用list,但可以通过C、Perl等语言接口扩展。Tk提供了多种窗口类型,如button、radiobutton,可以通过Tix和itcl/itk进行扩展。Tcl/Tk可通过package进行功能扩展,支持跨平台移植,适用于简单的窗口应用和Palm掌上电脑。Tcl/Tk的缺点是其简单的数据结构和语法在复杂控制和计算时的局限性。
摘要由CSDN通过智能技术生成

Tcl/Tk的一些笔记

                                      

快速图形界面开发语言Tcl/Tk
0.前言.在unix like系统下,有没有像VB一样的快速图象界面开发工
具呢?很多人大概马上会想到Kylix,基于Java的一些图形开发工具
。但是数百兆的安装大小对于一些简单用途是否小题大做了呢?其实,
很多脚本语言如Perl,Python本身就已经包含Tk库,可以用来建构图
形界面。不过,这些也都是数十兆的软件包,图形也并非主要用途,Tk
库往往不是缺省就包含的。那么设想有这样一种工具,它可以逐行运
行,即时显示图象效果和事件驱动效果,拥有简单的语法提示,又可
简单的回溯修改,系统不过数兆,除命令行外还拥有简单的类似VB,Kylix
的窗口界面开发工具,可以简单移植到各种软件平台,包括Palm掌上
电脑,软件不需要一行修改,你会考虑使用它吗?
在你的X Window界面下的Xterm里面输入wish,或者xwish,wish80,tix
等,有相当大概率会出现一个控制台和一个空白的窗口,恭喜,在你
不知道的时候,您已经拥有了它。

1.特点Tk是一套在Unix like,Mac,Windows下可移植的快速图形开发
工具ToolKit的缩写。它有多种语言界面,如C,Perl,Python等。而其
中其中常见也最方便短小的界面语言是Tcl。Tcl/Tk在有X window的unix
 like系统下基本是缺省配置,在windows下的wrapper也不过几百k。
相对于其他图形界面开发语言来说实在是短小精悍。通过Visual Tcl,
你可以获得如同Visual Basic一样简单的快速开发能力。而Visual Tcl
这样一个强大的工具本身全部均为Tcl/Tk写成,大小不过数兆,可见
它的能力和容易程度。
它的缺点是:Tcl语言是一种几乎没有数据类型的语言!这是短小、
可移植带来的代价。它是一种几乎只用list作数据类型的语言,构造
十分精巧,写起它的语法解释程序时很简单。反过来,在写应用程序
时面对复杂的控制和计算有点麻烦(但是仍然能够解决,而且也不是
他的设计目的)。本文在此仅为介绍,细节请自己阅读mannual。相
关章节是n,例man n entry。
windows下的tcl/tk手册为一个HLP文件。
Tcl一个著名的扩展就是expect,可以作用来自动连接telnet等script
无法处理的智能应答工作。
Tcl/Tk的基本系统窗口类型比较少,常见的扩展有Tix,和面向对象的
版本itcl/itk(incr Tcl)。两者已包含在大多数Tcl/Tk系统中。
Tcl/Tk可以通过装载package来扩展命令和窗口类型。
可以通过下载别人写好的package,自己编写package,或者将Tcl/Tk
嵌入到C来完成复杂任务。
2。需求与安装、运行在unix like系统(Sun,Linux)下,Tcl/Tk需
要X支持(废话),但是Tcl本身不需要。在Mac、Windows下,需要安
装Tcl/Tk的移植版本。可以在http://dev.scriptics.com下载,最新
版本在8.3左右(2003年初)。您也许还需要Visual Tcl工具包,可
以在同一网址下载,它需要最新版本的Tcl/Tk支持。windows下全部
开发系统下载约5.2M,其中tcl/tk 2.5M(含手册,C调用Tcl/Tk的头
文件,库文件),Visual Tcl 2.9M。相对于Tk的C开发包庞大的身材
(当然也对应强大的功能),在简单的窗口开发中您也可以考虑采取C
内嵌Tcl/Tk的开发模式。
安装时Mac/Windows直接运行安装程序。
unix like系统下Tcl/Tk一般作为一个部件在安装X Window同时就装
好了(因为很小),没有安装的情况下也有rpm,binary.gz等包可以
安装。
windows下unix仿真程序cygwin32系统里面也包含Tcl/Tk。
运行Tcl语言的命令行程序名为tclsh,也许包含软件版本,如tclsh83
。cygwin里面的为cygtclsh83.exe。
运行Tk图形界面的命令为wish,同样可能包含数字后缀或者其他前缀

Tix,itcl,itk的命令行程序名分别是tix,itclsh,itkwish。
如果执行命令找不到而软件已安装,请将包含上述命令的路径包含到
您的path变量里面。
in unix(~/.profile)加入如下行: set path=$path:/local/bin/tcl/
 (缺省不需要,因为就在X目录或者/bin里面就有)in windows(autoexec.bat)
加入如下行:    path %path%;"c:Program FilesTclBin"具体目
录名在此仅为举例,不一定和您安装的目录一致,请自己修改。
Tcl可以被编译(须购买相应软件,可以提高运行速度),或者在windows
下直接wrap成一个独立运行的可执行文件(使用Visual Tcl工具包里
面的freewrap objectfile.tcl)。在普通模式下tcl在运行时也被编
译为机器无关的bytecode,不过你不需要知道细节。
3.Tcl简介
3.1 基础
Tcl语句为 Command [-option1 value1 [-option2 value2...]  arg1 [arg2 arg3...]
在控制台输入命令后回车,命令即被执行并打
印当前命令的返回值。当一行写不下时可用续行,欲在一行包含多个语句可用;分开。
比如exec ls *.cTcl里面基本只有四种数据类型:简单字符串,数组,
表,变量。而字符串可以看作表的最基本单位,变量可以看作系统数
组里面以变量名为下标的字符串。平常所用的变量,命令等全部是字符串。
变量可以用variable来定义,通过set来赋值,unset来消除。变量用$
开头。
set a "this is good"
将$a赋值为"this is good"
set a [expr 3+$b]
此命令将3+$b的结果赋值给$a。
不带第二个参数将返回$a的值因为Tcl
里面没有数字类型,必须用expr来求字符串表达式的数学运算。
[]表示将括号内的表达式求值。在Tcl里面要使用命令的结果作为另一个命令的参数,就要用[]。

{}和()在Tcl里面已经有其他含义。
数组(或者说哈希表hash table)的下标是表(list),或者最简单的表:
不含空格和特殊字符的字符串,下标用()表示。
它可以用array来定义。
set ms(haha) a
set b ms
set c haha
则$b($c)的值为a。
变量或者数组无需定义即可使用,不过第一次使用时必须赋值。
表包含0到多个元素。
set a "this is a pen"
set b {this is a pen}a和b是等价的。
a的第一个元素是this,第二个是is,余下依次类推。
如果没有界定符,缺省界定符是空格,即set a "asdfg"和set a  {asdfg}
和set a asdfg是等价的。
set a this返回只有一个元素this的表$a,或者说简单字符串$a。
表可以是空表set a ""set b {}表的元素也可以是表,空表和没有元
素是不同的如{a}不同于{a {}},{}不同于{ {}}。
set a {this is a list {a b c}}则表的第5个元素是{a b c}

tcl打包成exe程序的工具,使用方法如下:FreeWrap可以把TCL/TK的脚本和二进制文件打包成应用程序,FreeWrap将所有的文件组合成一个单独的可执行文件。 FreeWrap的原理是把脚本和tcl/tk解释器和库文件都打包在一个文件当中,做成一个可执行程序。生成的可执行文件实际上是一个压缩包,里面包含有需要使用的所有内容。不同的版本对应不同的tcl/tk版本,由于原始的tcl/tk版本只包括一些基本的库,所以如果需要使用更多的库,需要额外添加到文件中,还需要注意添加的方法和调用的顺序,如果是二进制的库就更麻烦了,需要额外的添加一段脚本。 FreeWrap的可执行程序本身就是一个shell,如果修改了可执行程序的名字,在windows下把freeWrap修改为shell,再运行则是一个tcl/tk的shell。 FreeWrap使用非常方便,就是一条命令,语法参考如下。 语法:freewrap dir/test.tcl [-debug] [-f FileLoadList] [-forcewrap] [-i ICOfile] [-o OutFile][-p] [-w WrapStub] File1 ... FileN 参数: dir/test.tcl TCL/TK脚本主文件目录 File1 ... FileN 需要打包在可执行程序里面的文件,用空格间隔 -debug 在打包的时候打开一个可以查看调试信息的窗口 -f 需要打包的在命令后面的文件名详单 -forcewrapfreeWrap应用程序名被修改后,强制freeWrap程序以打包程序来运行 -i 指定生成的可执行应用程序的图标 -o 指定生成的可执行应用程序的名称 -p 创建一个freeWrap格式的程序包而不是创建一个可执行程序 -w 生成跨平台的可执行文件 参数详解: dir/test.tcl TCL/TK脚本主文件目录,命令紧接着的默认为主脚本,其它的文件都为额外添加的文件。 File1 ... FileN 可以是任意的文件,但是要注意在生成的可执行程序包中的访问方式。比如你在命令中添加的file路径为C:\myfile\lib.tcl,那么在在打包程序中的目录结构是如下: \myfile\lib.tcl test.tcl 所以在添加库文件时要十分小心,要保证在脚本中调用的文件为source \myfile\lib.tcl而不是source lib.tcl。 -f 可以罗列需要打包的文件路径名到一个txt文件当中,运行命令后自动添加,避免命令过长。比如有3个文件C:\lib1.tcl、C:\lib2.tcl和D:\lib3.tcl,那么就可以在一个txt文件中写入上面的全路径,注意一个文件路径名占用一行。在调用的时候就可以正常添加所需的文件了。 -forcewrap 简单点说就是默认的应用程序为freewrap,如果由于需要程序名称修改成了shell,那么就可以使用 freewrap dir/test.tcl -forcewrap来打包一个程序,如果没有-forcewrap则是调用一个shell。 -i 使用-i选项去指定生成的可执行程序使用的图标。比如freewrap test.tcl -i test.ico,ico文件需要满足一下三种条件之一:1、16*16 16位色 2、32*32 16位色 3、32*32 2位色,如果是其他ico文件格式,在生成可执行文件时还是会采用默认的图标。 -o 指定生成的可执行应用程序的名称,比如freewrap test.tcl -o my.exe,生成的可执行程序就是my.exe而不是test.exe。 -w 生成跨平台的可执行文件,生成的时候需要有目标平台的freewarp,举例如下: 在windows下生成可以在linux下运行的打包应用程序:freewrap test.tcl -w freewrap 在linux下生成可以在windows下运行的打包应用程序:freewrap test.tcl -w freewrap.exe
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值