Tcl/Tk 烹调书 - 文本编辑器


第 1 步: 建立一个可滚动的文本组件

脚本

译者按:余修改了部分代码。

开始时在 ed.tcl 中放入如下脚本:

#! /usr/bin/wish -f

global GotSelection
set GotSelection 0

frame .fr -width 10c -height 5c 	;#main window
wm title . "Simple Text Editor V 0"
pack .fr

#configure menubar on top
frame .menubar -relief raised -bd 2
pack .menubar -in .fr -fill x

frame .edf 

#put a text widget with scroll bars

text .ed -width 80 -height 20 -bg grey \
	-yscrollcommand ".ys set" 

scrollbar .ys -command ".ed yview" 
pack .ed .ys -in .edf -side left -fill y

pack .edf -in .fr  -fill x
pack .edf -in .fr -after .menubar -fill x

脚本的第一行是给 shell 处理的命令,用来调用 wish shell 并把这个文件作为 wish 将要解释(分析)的脚本而传递给它。

下一行声明了一个全局变量 GotSelection 接着初始化它为 boolean 值零[注意正如 Tcl 分析器所关心的那样,"set GotSelection 0" 是一个有三个元素的的字符串]。

下三行建立并包装一个基本框架 ".fr" ,它的宽度是 10 厘米,高度是5厘米,根窗口的标题是 "Simple Text Editor V 0"。

对这个文本编辑器,我们要在主窗口的顶部建立一个菜单条,支持 File,Edit 和 Find 动作。在 Tk 中,菜单条是一个给每个菜单一个菜单按钮的框架组件(通常是下拉式的)。选项 -relief 接受值 raised 或 sunken 来给组件一个突起或凹陷的外观。选项 -fill (通常用于滚动条,菜单条等)接受 "x" 参数 "y" 作为参数来在水平或垂直方向上扩展组件直到父组件在这个方向上的的边界为止。

下面的一组行建立一个文本组件".ed"和一个垂直滚动条,在主窗口的框架".edf"中包装它们。

-yscrollcommand ".ys set" 联合上(connect) ".ys" 滚动条的命令 .ed yview,把文本和滚动条连接在一起。

"-after" 选项告诉包装器把包含文本组件和滚动条组件的框架包装在顶端的菜单条下面,选项 "-side" 告诉它从左边开始包装文本组件和垂直滚动条。

使 ed.tcl 可执行并运行它结果将类似于下面: