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. 【转】Chrome快捷键

    感谢原作者:http://www.cnblogs.com/mikalshao/archive/2010/11/03/1868568.html 标签页和窗口快捷键 Ctrl+N 打开新窗口. Ctrl+ ...

  2. delphi7 编译程序时报win32.indcu.a病毒的解决方法

    Delphi7用了很久一直都没问题,同一个工程文件昨天编译时mod32还不会报毒,今天重新编译时,生成的exe突然nod32报毒. 提示: “Project1.exe Win32/Induc.A 病毒 ...

  3. CSS中继承,特殊性,层叠与重要性

    继承 CSS的某些样式是具有继承性的,那么什么是继承呢?继承是一种规则,它允许样式不仅应用于某个特定html标签元素,而且应用于其后代.比如下面代码: <html><head> ...

  4. word-wrap&&word-break,奇偶行、列设置样式

    1.word-wrap和word-break区分. 来源场景:机械租赁mvc驾驶员信息查看: 当备注的文字多的时候,第一列的值成这模样: 解决方案:设置table 的td可自动换行.首先table设置 ...

  5. Linux内核--网络栈实现分析(八)--应用层发送数据(下)

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

  6. WP7系统托盘和应用程序栏

    (一)系统托盘和应用程序栏系统托盘(1)显示系统级别的状态信息(2)Apps能隐藏和显示系统托盘Micosoft.Phone.Shell.SystemTray.IsVisible=true;应用程序栏 ...

  7. C# 关于DataGridView 绑定数据源时列名窜位置 的处理

    只需要写一句话:dataGridView1.AutoGenerateColumns = false; 代码提示中的解释:获取或设置一个值,该值指示在设置System.Windows.Forms.Dat ...

  8. Jexus web server V5.4.5 已经发布

    Jexus 是运行于 Linux/FreeBSD 平台的一款以支持 ASP.NET 为主要特色的,同时非常重视安全性和稳定性的高性能 WEB 服务器.最新版 5.4.5 已经发布,官方网站是:www. ...

  9. crtmpserver系列(二):搭建简易流媒体直播系统

    crtmpserver简介 我们在第一章的时候已经简要说明了crtmpserver,crtmpserver是一个由C++语言编写的开源的RTMP流媒体服务器,与其对应的商业产品自然是Adobe公司的F ...

  10. crtmpserver系列(一):流媒体概述

    概述 所谓流媒体按照字面意思理解就是像流一样的媒体,看起来像是废话.流媒体现在司空见惯,所以一般人大概不会有疑问.事实上在流媒体还没有出现的时候,基本上通过网络播放电影就不太现实.通过网络播放电影的时 ...