Tcl Tk Introduction

eryar@163.com

摘要Abstract:Tcl/Tck脚本可以很容易实现用户自定义的命令,方便的创建图形化的用户界面GUI,所以Tcl和Tk的应用领域几乎覆盖了图形和工程应用的全部范围,包括计算机辅助设计、软件开发、测试、仪器控制、科学可视化及多媒体方面。即可以使用Tcl/Tk实现AVEVA中的PML类似的功能,允许用户自己编写简单程序实现程序的二次开发。

关键字Key Words:AVEVA, PDMS, PML, Tcl/Tk, Script Modeling

一、PML of AVEVA

看到AVEVA的解决方案中有一个方便灵活的用户自定义语言PML(the AVEVA Programmable Macro Language),通过PML可以根据不同的用户需求来对程序进行扩展,而AVEVA则可以专注于核心模块的开发与完善。这对软件开发而言,是很有益处的,可以在满足各种用户多变的需求的情况下保证软件的质量。使用PML实现一个简单的窗口代码及效果如下图所示:

Figure 1.1 Hello World Form code of PML

Figure 1.2 A simple Form of PML

二、Tcl/Tk

Tcl表示“Tool Command Language”。在学习OpenCascade的过程中,看到OpenCascade的一个测试工具Draw Test Harness就是使用了Tcl/Tk来实现自定义的命令。通过自定义的命令,即可以对一些功能进行测试,如下图所示,使用简单命令,即可以生成图形:

Figure 2.1 Draw Test Harness with Tcl/Tk

Netgen是一个用于网格剖分的程序,它的用户界面也是用Tcl/Tk来实现的,效果也不错,如下图所示:

Figure 2.2 Pipe Model in Netgen

三、结论 Conclusion

Tcl和Tk一起为应用程序开发者和使用者提供了很多好处。首先是快速开发。很多有意思的应用程序完全可以用Tcl脚本编写。这样就可以在比C/C++或Java更高的层次上进行开发,Tk隐藏了C或Java程序员必须关注的很多细节。与低级工具相比,要使用Tcl和Tk所需要学习的知识更少,需要编写的代码更少。通过几个小时的学习,Tcl/Tk新手用户就可以创建有意思的用户界面,很多开发人员从其他工具集转而使用Tcl和Tk工具集后,应用程序开发所需要的代码数量和开发时间都减少了90%。

Tcl和Tk适于快速开发的另一个原因在于Tcl是解释语言,使用Tcl应用程序时,可以在运行中生成和使用新脚本,而无需重新编译和重启应用程序。

Tcl可以跨平台,这意味着在一个平台如Linux上开发的程序,在大多数情况下可以不加改动的在另一个平台上运行,如在Windows上或Macintosh上运行。

Tcl还是第一种拥有原生Unicode支持的动态语言。因此,Tcl可以处理这个世界上几乎所有的书面语言。

使用Tcl的另一个显著优点在于它和它的大多数扩展都是免费的开源软件,允许所有人免费下载、查看、修改及再发布。

另外,Tcl还可以让应用程序很容易地拥有强大的脚本功能。例如为要一个已经存在的程序添加脚本功能,您只需要实现几条新的Tcl命令,用来为应用程序提供相应的基本功能。然后,把您的新命令和Tcl库链接起来生成全功能的脚本语言,该语言就包含了Tcl提供的命令和您编写的那些命令。

Tcl还为用户提供了方便。一旦学习了Tcl/Tk就能为任何Tcl和Tk应用程序编写脚本,只需要学习该应用程序特有的少数几条命令即可。这使得更多的用户有能力对应用程序进行个性化改造和强化。

如果不借助别的软件自己来实现一个AVEVA中的PML类似的功能,可能要涉及很多知识,如编译原理,计算机系统等很多很多,编写出来的程序即使能用,可能质量也不好。正如荀子所言:“君子性非异也,善假于物也”;牛顿也说“我不知道在别人看来,我是什么样的人;但在我自己看来,我不过就像是一个在海滨玩耍的小孩,为不时发现比寻常更为光滑的一块卵石或比寻常更为美丽的一片贝壳而沾沾自喜,而对于展现在我面前的浩瀚的真理的海洋,却全然没有发现。如果说我比别人看得更远些,那是因为我站在了巨人的肩上。”如果借助于巨人的力量,使用Tcl就可以方便的实现PML类似的功能,现在需要做的就是对前人知识的学习与使用。

PDF Version: Tcl Tk Introduction

Tcl Tk Introduction的更多相关文章

  1. python INFO: Can't locate Tcl/Tk libs and/or headers

    安装opencv的时候遇到这个错误: python INFO: Can't locate Tcl/Tk libs and/or headers 参考如下文章解决这个问题: http://www.ver ...

  2. freewrap——将tcl/tk脚本转变为可执行文件

     FreeWrap可以把TCL/TK的脚本和二进制文件打包成应用程序,FreeWrap将所有的文件组合成一个单独的可执行文件.     FreeWrap的原理是把脚本和tcl/tk解释器和库文件都打包 ...

  3. tcl/tk demo

    环境及版本说明: OSX10.9 tclsh -> tclsh8.5 wish -> wish8.5 查看本机运行环境: which wish; 2 /usr/bin/wish which ...

  4. 用Tcl/Tk脚本计算圆周率

      读了阮一峰的蒙特卡罗方法入门,用概率统计的方式求解棘手的数学问题还挺有意思的,尤其是利用正方形和它的内切圆之间的面积关系来建模求解圆周率的方法精巧又简单,比投针实验好理解也好实现多了.建模可不是M ...

  5. Tcl/tk缩放Truetype字体时的精度问题

    最近有国内新客户抱怨我们产品显示的原理图太不专业了,在原理图上使用宋体GB2312设计好中文图表,经过几次缩放时,表格内的文字居然会跑到表格外边,更要命的是打印出来的文档也存在同样的问题. 我研究了一 ...

  6. linux下ruby使用tcl/tk编程环境设置

    正常情况下最新的ruby都是不带tcl/tk选项编译的,所以我们在运行tcl/tk代码时都会发生找不到tk库的错误.解决办法很简单只要以tcl/tk选项编译ruby即可. 这里以ubuntu 15.0 ...

  7. Mac OS X下让ruby支持tcl/tk

    我记得在老早在OS X10.8下使用ruby1.9.x的时候只要到下载安装ActiveTcl8.5,没怎么配置就运行tk好好的.但是近日想重新执行下tk代码,发现在require 'tk'的时候就报错 ...

  8. pgtksh -- PostgreSQL Tcl/Tk shell 客户端

    SYNOPSIS pgtksh [filename [argument...]] DESCRIPTION 描述 pgtksh 是一个带有 PostgreSQL 数据库访问函数扩展的 Tcl/Tk sh ...

  9. tcl/tk实例详解——glob使用例解

    glob命令 这里以实例的形式解释一下glob命令的用法,很多时候纯粹的语法讲解根本讲不清楚,往往没有一个例子清晰,一下就glob命令进行一些分析,环境为Tclsh85,操作系统为windows XP ...

随机推荐

  1. 前端学习之touch.js与swiper学习

    Touch.js是移动设备上的手势识别与事件库,改框架基于原生js,操作简单,主要分drag,swipe,rotate,scale,tab,hold,touch操作. swiper是一个移动端触摸滑动 ...

  2. [XAF] How to define a business class at runtime or allow end-users to configure its members via the application UI?

    How to define a business class at runtime or allow end-users to configure its members via the applic ...

  3. 织梦CMS实现多条件筛选功能

    用织梦实现筛选的功能,其实主要就是运用到了织梦的高级搜索功能,然后用ajax去post替换掉本来的结果就可以了. 其实筛选的话,主要有两个问题需要解决,一个是前台的筛选实现,一个是后台根据前台的点击, ...

  4. JavaScript 基础第三天

    一.前言 在前天的内容我们提到了有关于JS的一些语言结构,这些语言结构都是语法中最为基本的内容必须予以熟记并可以灵活掌握. 二.引入 在今天内容中我们将讨论两个很重要的概念,数组与函数. 三.重点内容 ...

  5. Linux内核--网络栈实现分析(十)--网络层之IP协议(下)

    本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7552455 更多请查看专栏,地 ...

  6. ieee80211w

    80211w概述 1, WLAN网络在设计的时候就容易遭受各种类型的Denial of Service(DOS)攻击, a, 射频干扰(RF jamming) b, Spoofed Disconnec ...

  7. (转)Windows下的Memcached安装与使用

    WHAT Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memc ...

  8. WordPress页面Page和文章Post的相互转换

    1. 进入phpMyAdmin: 2. 进入WordPress对应的数据库: 3. 浏览wp_posts数据表: 4. 找到相应的 页面Page 并编辑(找到相应的 文章Post 并编辑): 5. 修 ...

  9. 《kali linux 渗透测试初级教程》免费下载

    Kali Linux系列教程是在51cto上售卖的入门教程,售价100元.每天都有很多网友找我要全部教程,也有人偷偷的录制了教程.索性公开出来,如果您觉得还可以的话,希望可以选择发个小红包或者转发 获 ...

  10. 作业三:PSP耗时

    请同学们参照教材<构建之法>2.3节表2-4 PSP2.1汇报自己在完成四则运算编程时候的时间分布,发布到博客上. 个人项目耗时情况分析 PSP Personal Software Pro ...