Tk 命令

Tk 命令
Tk 命令

Tk 命令,第一部分

有二十多条 Tk 命令用于对 Tk 小部件集的使用、增强或补充。它们包括 bell,响铃,这取决于对正在运行的 X Window 系统的配置。

bind 创建 Tcl 脚本和 X 事件之间的关联;例如,指定的键盘/鼠标组合操作。

clipboard 是另一种多功能 Tk 命令—它包含用于清除内容、装入内容和将内容粘贴到 Tk 剪贴板以及从 Tk 剪贴板粘贴内容(这不同于正在使用的 X 或窗口管理器本身所具有的任何剪贴板功能)。

destroy 用于删除窗口及其所有子窗口。在….?(根)窗口中使用时,它删除整个应用程序。

event 是一种功效强大的工具,用于生成虚拟窗口事件并将这些事件插入正在处理的队列中,就好象实际事件(例如,用鼠标单击按钮)已经真的发生一样。

font 命令用于创建指定的系统字体实例。它允许系统字体的本地(对于脚本而言)命名、已命名字体的属性修改以及字体的“删除”。在 wish 提示符下输入 font families,可以获得可用字体的列表。

焦点是窗口管理舞台中的一个重要概念—在任何给定的显示中,每次只能有一个窗口“注意”键盘和鼠标。

Tk focus 命令用于将脚本控制交给显示焦点,并将它发送到指定窗口。补充函数 grab 允许 Tk 独占对某处的显示焦点,在该处,在窗口环境中报告位于窗口之外发生的事件。当要在任何其它系统活动发生之前强迫完成某一选项时,这是有用的。

Tk 命令,第二部分

继续概述 Tk 命令,下一个是 grid,控制 Tk 窗口几何性质的接口。它用于在窗口中以行和列的格式安排小部件。

lower(和补充命令 raise)解决子窗口的可见性。下层(lowered)窗口不会遮掩与其重叠的兄弟窗口;上层(raised)窗口被带到最上层。在显示多个文档情形下会经常使用。许多 Tk 小部件和命令都使用一组公共的标准选项。可以使用 option 命令来查看或添加它们。

对于将小部件和子窗口放入窗口中,有两条命令:pack 和 place,它们都已演示过。其最简单的使用,pack 将一个或多个小部件添加到窗口,并将这些对象周围的窗口缩小至我们在本节开始部分的 Tk Hello

示例中所看到的那样,除非另有指明。place 使用相对或绝对尺寸来设置和显示父窗口中的对象,例如,从左边开始的 5 个像素,或窗口下一半(0.5)。

其它命令包括 selection,X 对象选择工具集的接口;tk,它提供对 Tk 解释器内部状态的所选择部分的访问;winfo 命令,用于检索有关 Tk 管理的窗口的数据;wm,正在运行窗口管理器的界面,用于设置从标题栏文本到所有类型的几何规范和约束的多个功能。

真的(小)Tk 应用程序

我需要每天运行的 LAN 转换脚本的接口。所以为方便使用,让我们使用 Tcl/Tk 来构建一个小工具。我希望它能够根据主目录中的 ASCII 配置文件提供一些选择。该文件包含下表中所示的数据:

# ~/.netsetrc

# 03.26.2001 bilbrey

# space between name and command

Home /usr/local/bin/nethome

Office /usr/local/bin/netoffice

Admin /usr/local/bin/netadmin

应用程序(在下一屏显示完整代码清单和图像)读取配置文件并对按钮名及其相关操作的每个非空白、非注释行进行解析。虽然通过定义三个按钮来运行显式程序,会使编写脚本变得更加容易,但这种更一般的解决方案允许我只要把单一行添加到 ~/.netsetrc 中,就可添加我想要的任何功能。

该代码的缺点是,它不容许配置文件格式有严重错误。在按钮按下时,它期望是这样的格式:单字按钮名,接着是一个空格,接着是执行的命令(如果有必要,可以有自变量)。不过,从理论上讲,与无结构的用户输入相比,配置文件更容易保持在一行上。

样本 Tk 应用程序#!/usr/bin/wish

#

# netset.tcl

# 03.26.2001 bilbrey

set ConFile "~/.netsetrc"

if [catch {open $ConFile r} Conf] {

puts stderr "Open $ConFile failed"

return 1

}

# parse config, define buttons

set Bcount 0

while {[gets $Conf Cline] >= 0} {

if {1 == [string match #* $Cline]} continue

if {[string length $Cline] < 4} continue

set Nend [string wordend $Cline 0]

incr Nend -1

set Bname [string range $Cline 0 $Nend]

set Cbeg [expr $Nend + 2]

set Bcomd "exec "

append Bcomd [string range $Cline $Cbeg end]

incr Bcount

set NextBut "button$Bcount"

button .$NextBut -text $Bname -command $Bcomd

}

if {$Bcount == 1} {

puts stderr "No buttons defined"

return 2

}

# display buttons

while {$Bcount >= 1} {

set NextBut "button$Bcount"

pack .$NextBut -padx 10 -pady 10

incr Bcount -1

}

button .exit -text Exit -command {exit}

pack .exit -padx 10 -pady 10还有问题请来论坛寻求帮助:https://www.360docs.net/doc/f013442236.html,/bbs/

相关主题
相关文档
最新文档