ZetCode

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

简单示例

第一个例子展示了屏幕上的一个基本窗口。

simple.tcl
#!/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 坐标。

Simple
图:简单窗口

居中窗口

此脚本将窗口居中放置在屏幕上。

center.tcl
#!/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 }]

给定其宽度和高度,我们确定居中窗口的 xy 坐标。

wm geometry . ${width}x${height}+${x}+${y}

窗口被放置在屏幕上。

退出按钮

在本节的最后一个例子中,我们创建一个退出按钮。当我们按下这个按钮时,应用程序将终止。

quit_button.tcl
#!/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 几何管理器以绝对坐标定位按钮,从根窗口的左上角开始。

Quit button
图:退出按钮

引用

本教程使用了 wikipedia.orgtcl.tk

本节介绍了 Tcl/Tk。