18.7. Tcl/Tk 入门


18.7.1. Tcl/Tk 简介

工具命令语言(Tcl) 是一种动态编程语言。这个语言的解释器和 C 库一同由 tcl 软件包提供。

一起使用 TclTk (Tcl/Tk) 启用创建跨平台 GUI 应用程序。TKtk 软件包提供。

请注意,Tk 可以引用以下任意一种:

  • 用于多种语言的编程工具包
  • Tk C 库绑定可用于多种语言,如 C、Ruby、Perl 和 Python
  • 一个需要解释器来实例化 Tk 控制台
  • 为特定 Tcl 解释器添加多个新命令的 Tk 扩展

有关 Tcl/Tk 的更多信息,请参阅 Tcl/Tk manualTcl/Tk 文档网页

18.7.2. Tcl/Tk 8.6 中的显著变化

Red Hat Enterprise Linux 7 使用 Tcl/Tk 8.5。在 Red Hat Enterprise Linux 8 中,Tcl/Tk 版本 8.6 在 Base OS 仓库中提供。

Tcl/Tk 8.5 相比,Tcl/Tk 8.6 的主要更改 有:

  • 基于对象的编程支持
  • 无堆栈评估实施
  • 增强的例外处理
  • 使用 Tcl 构建并安装的第三方软件包集合
  • 启用多线程操作
  • 对 SQL 数据库增强脚本的支持
  • IPv6 网络支持
  • 内置 Zlib 压缩
  • 列表处理

    提供了两个新命令,即 lmapdict map,它允许通过 Tcl 容器进行转换。

  • 按脚本堆叠频道

    有两个新命令 chan pushchan pop 可用,允许向 I/O 频道添加或删除转换。

Tk 的主要更改包括:

  • 内置 PNG 镜像支持
  • 忙碌窗口

    新的命令 tk busy 可用,它禁用对窗口或小部件的用户交互,并显示忙碌的光标。

  • 新的字体选择对话框接口
  • Angled 文本支持
  • 在 canvas 上移动支持

有关 Tcl 8.5Tcl 8.6 之间的更改的详细列表,请参阅 Tcl/Tk 8.6 中的更改。

18.7.3. 迁移到 Tcl/Tk 8.6

Red Hat Enterprise Linux 7 使用 Tcl/Tk 8.5。在 Red Hat Enterprise Linux 8 中,Tcl/Tk 版本 8.6 在 Base OS 仓库中提供。

本节论述了到 Tcl/Tk 8.6 的迁移路径:

  • 开发人员编写 Tcl 扩展或将 Tcl 解释器嵌入到其应用程序中
  • 用户使用 Tcl/Tk编写任务

18.7.3.1. Tcl 扩展开发人员迁移路径

要使您的代码与 Tcl 8.6 兼容,请使用以下步骤。

流程

  1. 重写代码以使用 interp 结构。例如,如果您的代码读取 interp→errorline,将其重写为使用以下功能:

    Tcl_GetErrorLine(interp)

    这是必要的,因为 Tcl 8.6 限制对 interp 结构成员的直接访问。

  2. 要使您的代码与 Tcl 8.5Tcl 8.6 兼容,请在包含 Tcl 库的头文件中使用以下代码片段:

    # include <tcl.h>
    # if !defined(Tcl_GetErrorLine)
    # define Tcl_GetErrorLine(interp) (interp→errorLine)
    # endif

18.7.3.2. 用户通过 Tcl/Tk 编写任务的迁移路径

Tcl 8.6 中,大多数脚本的工作方式与之前的 Tcl 版本相同。

要将代码迁移到 Tcl 8.6,请使用此流程。

流程

  • 在编写可移植代码时,请确保不使用 Tk 8.6 中不再支持的命令:

    tkIconList_Arrange
    tkIconList_AutoScan
    tkIconList_Btn1
    tkIconList_Config
    tkIconList_Create
    tkIconList_CtrlBtn1
    tkIconList_Curselection
    tkIconList_DeleteAll
    tkIconList_Double1
    tkIconList_DrawSelection
    tkIconList_FocusIn
    tkIconList_FocusOut
    tkIconList_Get
    tkIconList_Goto
    tkIconList_Index
    tkIconList_Invoke
    tkIconList_KeyPress
    tkIconList_Leave1
    tkIconList_LeftRight
    tkIconList_Motion1
    tkIconList_Reset
    tkIconList_ReturnKey
    tkIconList_See
    tkIconList_Select
    tkIconList_Selection
    tkIconList_ShiftBtn1
    tkIconList_UpDown

    请注意,您还可以检查 /usr/share/tk8.6/unsupported.tcl 文件中不支持的命令列表。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.