更新内容:
  • tkvideo 的 -stretch 参数默认设置为 1,添加部件后无需手工更改。
  • 更多的 Tile 部件。
  • 修正无法保存 Visual Tcl Binary 窗口位置,再次运行时向右移位的问题。
  •  其他 bug 修正。
新版本请到 Visual Tcl Binary 项目主页下载:
http://vtcl.tcltk.cn
2008/6/19

Visual Tcl 等于 Glade -- 论 vtcl 的正确使用方式。

许多朋友都觉得 Visual Tcl 生成的代码纷乱繁杂,只适合写一些小的项目,很难手工修改并且和其他代码结合编写大型程序。其实这是对 vtcl 作者设计本意的误解。就我的经验来说,vtcl 是 Tcl/Tk 应用程序界面快速开发的上上之选,在我经历的大大小小的项目中作为主力 GUI 创建工具从未出过问题,因为可能许多人都不经意间忽略了 vtcl 最重要的功能不是作为 IDE,而是 ---像 Glade 那样使用 vtcl 才是正确方式。奇怪吗?其实一点也不,你只要将 vtcl 当作是一个与 Glade 差不多的,只是功能稍强一些的界面编辑器就可以了。千万不要因为 vtcl 有直接增加函数的功能就诱惑自己用 vtcl 写太多的代码,那才是噩梦的开始。

下面是为了让大家更舒服地使用 Visual Tcl 的两条建议:
  1. 除非你真的是在编写一个小的程序,否则还是尽可能把 vtcl 生成的文件命名为 gui.tcl 吧。当然这只是一个约定,不是强制的。
  2. gui.tcl 中除了对外部代码必要的调用和添加一些初始化过程,尽可能少的自行添加其他函数。

这里你可能要问了,要怎样混合并调用外部代码呢?下面是个例子,很简单,只分三步:

一、用文本编辑器创建一个名为 hello.tcl 的文件,内容如下:

namespace eval hello {
proc showMsg {} {
    tk_messageBox -message "Hello, World!"
}
}

二、用 vtcl 创建一个新的窗体,在里边放置一个按钮部件。 双击该按钮,在弹出的命令编辑窗口中输入 hello::showMsg。

三、输入以下命令,生成一个名为 demo.tcl 的新文件。hello.tcl 在文件前部,gui.tcl 被添加到 demo.tcl 后部。

$cat hello.tcl > demo.tcl
$cat gui.tcl >> demo.tcl

现在 wish demo.tcl 一下,点击刚才新添加的按钮,看看是不是弹出 “Hello, World!” 的问候了?  :-)

可为什么要这样?简单的讲,好处是你可以根据不同 .tcl 模块之间的依赖顺序执行第三步,这样就能把一大堆分属不同模块的 .tcl 文件整合成一个单独的 .tcl 文件,这是发布软件时的一个好方法,尤其是准备将程序作为一个商业软件发布是更是如此。至少不会让破解者各个击破,或是遇到用 tclcompiler 加密混淆大量的 .tcl 到 .tbc 的麻烦了。当然,最好是写一个 Makefile 来简化操作。