Tcl/Tk 简介
最后修改于 2023 年 10 月 18 日
在本 Tcl/Tk 教程中,我们介绍 Tk 工具包并创建我们的第一个程序。
本教程的目的是让您开始使用 Tk 工具包和 Tcl 语言。
Tk
Tk 是一个开源的、跨平台的窗口部件工具包,它提供了一个用于构建图形用户界面 (GUI) 的基本元素库。Tk 的第一个公共版本发布于 1991 年。Tk 是 Tcl 语言的扩展。这意味着 Tk 通过添加构建用户界面的附加命令来扩展 Tcl 语言。它有针对其他几种语言的绑定,包括 Ada、Perl、Ruby、Python 或 Common Lisp。Tk 库通常与其主要语言一起被称为 Tcl/Tk。
Tcl
Tcl 是一种基于字符串的脚本语言。源代码被编译成字节码,然后由 Tcl 解释器解释。它由 John Osterhout 于 1988 年创建。目的是创建一种易于嵌入到应用程序中的语言。但它经常被用于其原始领域之外。该语言通常用于快速原型设计、脚本应用程序、GUI 或测试。Tcl 代表工具命令语言,其中 Tcl 脚本的源代码由命令组成。
Tcl 是一种过程式语言。它有一些函数式特性。
Tcl 和 Tk 的官方网站是 tcl.tk
简单示例
第一个例子展示了屏幕上的一个基本窗口。
#!/usr/bin/wish frame .fr wm title . Simple wm geometry . 350x250+300+300
虽然这段代码很小,但应用程序窗口可以做很多事情。它可以被调整大小、最大化或最小化。所有伴随它的复杂性都已对应用程序程序员隐藏。
#!/usr/bin/wish
wish
是一个 Tcl/Tk 解释器。它理解 Tcl 和 Tk 命令。
frame .fr
创建了 frame
窗口部件。frame 是一个 Tk 命令,用于创建 frame 窗口部件。该命令的参数是窗口部件的路径名。窗口部件的路径名以点字符开头。此字符代表主应用程序窗口。在 Tk 中,窗口部件形成一个层次结构。.fr
表示 frame 窗口部件放置在主应用程序窗口内。窗口部件路径是一个以点开头的字符串,由几个用点分隔的名称组成。这些名称是组成窗口部件层次结构的窗口部件名称。
wm title . Simple
wm
命令用于与窗口管理器交互。此代码行设置窗口标题。
wm geometry . 350x250+300+300
在这里,我们设置窗口的大小并将其放置在屏幕上。前两个数字指定窗口的宽度和高度。第三个和第四个参数是监视器屏幕上的 x, y 坐标。

居中窗口
此脚本将窗口居中放置在屏幕上。
#!/usr/bin/wish # ZetCode Tcl/Tk tutorial # # In this script, we center a window # on the screen. # # Author: Jan Bodnar # Website: www.zetcode.com set width 350 set height 250 set x [expr { ( [winfo vrootwidth .] - $width ) / 2 }] set y [expr { ( [winfo vrootheight .] - $height ) / 2 }] wm title . "Center" wm geometry . ${width}x${height}+${x}+${y}
我们需要获取窗口的大小和屏幕的大小,才能将窗口放置在监视器屏幕的中心。
set width 350 set height 250
这些是应用程序窗口的宽度和高度值。
set x [expr { ( [winfo vrootwidth .] - $width ) / 2 }] set y [expr { ( [winfo vrootheight .] - $height ) / 2 }]
给定其宽度和高度,我们确定居中窗口的 x
、y
坐标。
wm geometry . ${width}x${height}+${x}+${y}
窗口被放置在屏幕上。
退出按钮
在本节的最后一个例子中,我们创建一个退出按钮。当我们按下这个按钮时,应用程序将终止。
#!/usr/bin/wish # ZetCode Tcl/Tk tutorial # # This program creates a quit # button. When we press the button, # the application terminates. # # Author: Jan Bodnar # Website: www.zetcode.com button .hello -text "Quit" -command { exit } place .hello -x 50 -y 50 wm title . "Quit button" wm geometry . 350x250+300+300
我们在窗口上放置一个 button
。单击该按钮将终止应用程序。
button .hello -text "Quit" -command { exit }
创建了 button
窗口部件。按钮的标签使用 -text
选项提供。-command
选项指定按下按钮时要执行的程序。在我们的例子中,应用程序使用内置的 exit
命令终止。
place .hello -x 50 -y 50
我们使用 place
几何管理器以绝对坐标定位按钮,从根窗口的左上角开始。

引用
本教程使用了 wikipedia.org 和 tcl.tk。
本节介绍了 Tcl/Tk。