# `tkinter.tix` --- TK扩展包

源代码: Lib/tkinter/tix.py

3.6 版後已棄用: 这个 TK 扩展已无人维护所以请不要在新代码中使用。 请改用 `tkinter.ttk`。

`tkinter.tix` (Tk Interface Extension) 模块提供了更丰富的额外可视化部件集。 虽然标准 Tk 库包含许多有用的部件，但还远不够完备。 `tkinter.tix` 库提供了标准 Tk 所缺少的大量常用部件: `HList`, `ComboBox`, `Control` (即 SpinBox) 以及一系列可滚动的部件。 `tkinter.tix` 还包括了大量在多种不同领域的应用中很常用的部件: `NoteBook`, `FileEntry`, `PanedWindow` 等等；总共有超过 40 种。

使用这些新增部件，你可以为应用程序引入新的交互技术，创建更好用且更直观的用户界面。 你在设计应用程序时可以通过选择最适合的部件来匹配你的应用程序和用户的特殊需求。

也參考

Tix 主页

  `Tix` 的主页。 其中包括附加文档和下载资源的链接。

Tix Man Pages

  在线版本的指南页面和参考材料。

Tix Programming Guide

  在线版本的程序员参考材料。

Tix Development Applications

  开发 Tix 和 Tkinter 程序的 Tix 应用。 Tide 应用在 Tk 在 Tkinter 下工作，并包括了 TixInspect，这是一个可远程修改和调试 Tix/Tk/Tkinter 应用的检查工具。

## 使用 Tix

class `tkinter.tix.``Tk`(screenName=None, baseName=None, className='Tix')

  最常用于代表应用主窗口的最高层级部件。 它具有一个相关联的 Tcl 解释器。interpreter.

  `tkinter.tix` 模块中的类子类化了 `tkinter` 中的类。 前者会导入后者，因此 `tkinter.tix` 要使用 Tkinter，你所要做的就是导入一个模块。 通常，你可以只导入 `tkinter.tix`，并将最高层级调用由 `tkinter.Tk` 替换为 `tix.Tk`:

      from tkinter import tix
      from tkinter.constants import *
      root = tix.Tk()

要使用 `tkinter.tix`，你必须安装有 Tix 部件，通常会与你的 Tk 部分一起安装。 要测试你的安装，请尝试以下代码:

    from tkinter import tix
    root = tix.Tk()
    root.tk.eval('package require Tix')

## Tix 部件

Tix 将 40 多个部件类引入到 `tkinter` 工具集中。

### 基本部件

class `tkinter.tix.``Balloon`

  Balloon 会在部件上弹出以提供帮助信息。 当用户将光标移到一个与 Balloon 部件绑定的部件内时，将在屏幕上弹出一个显示描述性消息的小窗口。

class `tkinter.tix.``ButtonBox`

  ButtonBox 部件会创建一组按钮框，例如常用的 `Ok Cancel` 按钮框。

class `tkinter.tix.``ComboBox`

  ComboBox 部件类似于 MS Windows 中的组合框控件。 用户可以通过在输入框子部件中输入或是在列表框子部件中选择来选定一个选项。

class `tkinter.tix.``Control`

  The Control 控件又名 `SpinBox` 控件。 用户可通过点按两个方向键或直接输入内容来调整数值。 更新的数值将被检查是否在用户定义的上下限之内。

class `tkinter.tix.``LabelEntry`

  LabelEntry 部件将输入框部件和标签打包为一个部件。 它可被用来简化 "输入表单" 类界面的创建。

class `tkinter.tix.``LabelFrame`

  LabelFrame 部件将框架部件和标签打包为一个部件。 要在一个 LabelFrame 部件中创建部件，应当创建与 `frame` 子部件相关联的新部件并在 `frame` 子部件中管理它们。

class `tkinter.tix.``Meter`

  Meter 部件可用来显示可能会耗费很长时间运行的后台任务的进度。

class `tkinter.tix.``OptionMenu`

  OptionMenu 可创建一个选项按钮菜单。

class `tkinter.tix.``PopupMenu`

  PopupMenu 部件可被用来替代 `tk_popup` 命令。 `Tix` `PopupMenu` 部件的优势在于它所需要的应用操纵代码较少。

class `tkinter.tix.``Select`

  Select 控件是一组按钮子控件的容器。 它可被用来为用户提供单选钮或复选钮形式的选项。

class `tkinter.tix.``StdButtonBox`

  StdButtonBox 部件是一个用于 Motif 风格对话框的标准按钮组。

### 文件选择器

class `tkinter.tix.``DirList`

  DirList 部件显示一个目录、它的上级目录和子目录的列表视图。 用户可以选择列表中显示的某个目录或切换到另一个目录。

class `tkinter.tix.``DirTree`

  DirTree 部件显示一个目录、它的上级目录和子目录的树状视图。 用户可以选择其中显示的某个目录或切换到另一个目录。

class `tkinter.tix.``DirSelectDialog`

  DirSelectDialog 部件以对话框窗口形式表示文件系统中的目录。 用户可以使用该对话框窗口在文件系统中漫游以选择所需的目录。

class `tkinter.tix.``DirSelectBox`

  `DirSelectBox` 类似于标准的 Motif(TM) 目录选择框。 它通常用于让用户选择一个目录。 DirSelectBox 会将最近选择的目录存放在一个 ComboBox 部件中以便可以再次快速地选择它们。

class `tkinter.tix.``ExFileSelectBox`

  ExFileSelectBox 部件通常是嵌入在 tixExFileSelectDialog 部件中。 它为用户提供了一种方便的选择文件方法。 `ExFileSelectBox` 部件的风格非常类似于 MS Windows 3.1 中的标准文件对话框。

class `tkinter.tix.``FileSelectBox`

  FileSelectBox 类似于标准的 Motif(TM) 文件选择框。 它通常用于让用户选择一个文件。 FileSelectBox 会将最近选择的文件存放在一个 `ComboBox` 部件中以便可以再次快速地选择它们。

class `tkinter.tix.``FileEntry`

  FileEntry 部件可被用于输入一个文件名。 用户可以手动输入文件名。 或者用户也可以按输入框旁边的按钮控件，这将打开一个文件选择对话框。

### 层级式列表框

class `tkinter.tix.``HList`

  HList 部件可被用于显示任何具有层级结构的数据，例如文件系统目录树。 其中的列表条目带有缩进并按照它们在层级中的位置以分支线段相连。

class `tkinter.tix.``CheckList`

  CheckList 部件可显示一个供用户选择的条目列表。 CheckList 的功能类似于 Tk 复选钮或单选钮部件，不同之处在于它能够处理比复选钮或单选钮多得多的条目。

class `tkinter.tix.``Tree`

  Tree 部件可被用于以树形显示具有层级结构的数据。 用户可以通过打开或关闭部分树枝来调整树形视图。

### 表格式列表框

class `tkinter.tix.``TList`

  TList 部件可被用于以表格形式显示数据。 `TList` 部件中的列表条目类似于 Tk 列表框部件中的条目。 主要差异在于 (1) `TList` 部件能以二维格式显示列表条目 (2) 你可以在列表条目中使用图片以及多种颜色和字体。

### 管理器部件

class `tkinter.tix.``PanedWindow`

  PanedWindow 部件允许用户交互式地控制多个面板的大小。 这些面板可以垂直或水平地排列。 用户通过拖动两个面板间的控制柄来改变面板的大小。

class `tkinter.tix.``ListNoteBook`

  ListNoteBook 部件非常类似于 `TixNoteBook` 部件：它可被用于在有限空间内显示多个窗口，就像是一个“笔记本”。 笔记本可分为许多页面（窗口）。 同一时刻只能显示其中一个页面。 用户可以通过在 `hlist` 子部件中选择所需页面的名称来切换这些页面。

class `tkinter.tix.``NoteBook`

  NoteBook 部件可被用于在有限空间内显示多个窗口，就像是一个“笔记本”。 笔记本可分为许多页面。 同一时刻只能显示其中一个页面。 用户可以通过选择 NoteBook 部件顶端的可视化“选项卡”来切换这些页面。

### 图像类型

`tkinter.tix` 模块增加了:

- 将 pixmap 功能提供给所有 `tkinter.tix` 和 `tkinter` 部件以使用 XPM 文件创建彩色图像。

- Compound 图像类型可被用于创建由许多横行构成的图像；每一行都包含从左至右排列的一组条目（文本、位图、图像或空白）。 例如，某个组合图像可被用于在一个 Tk `Button` 部件内同时显示一张位图和一个文本字符串。

### 其他部件

class `tkinter.tix.``InputOnly`

  InputOnly 部件可接收来自用户的输入，此功能可通过 `bind` 命令实现（仅限 Unix）。

### 表单布局管理器

`tkinter.tix` 还额外提供了以下部件来增强 `tkinter` 的功能:

class `tkinter.tix.``Form`

  Form 布局管理器是以针对所有 Tk 部件的附加规则为基础的。

## Tix 命令

class `tkinter.tix.``tixCommand`

  Tix 命令 提供了对 `Tix` 内部状态和 `Tix` 应用程序上下文等杂项元素的访问。 大部分由这些方法控制的信息作为一个整体被发给应用程序，或是发给一个屏幕或显示区域，而不是某个特定窗口。

  要查看当前的设置，通常的用法是:

      from tkinter import tix
      root = tix.Tk()
      print(root.tix_configure())

`tixCommand.``tix_configure`(cnf=None, **kw)

  查询或修改 Tix 应用程序上下文的配置选项。 如果未指定任何选项，则返回包含所有选项的字典。 如果指定了不带值的选项，则该方法返回描述指定选项的列表（如果未指定选项则此列表与所返回值对应的子列表相同）。 如果指定了一个或多个选项-值对，则该方法会将指定的选项修改为指定的值；在此情况下该方法将返回一个空字符串。 选项可以是配置选项中的任何一个。

`tixCommand.``tix_cget`(option)

  返回由 option 给出的配置选项的当前值。 选项可以是配置选项中的任何一个。

`tixCommand.``tix_getbitmap`(name)

  在某个位图目录中定位名称为 `name.xpm` 或 `name` 的位图文件（位图目录参见 `tix_addbitmapdir()` 方法）。 通过使用 `tix_getbitmap()`，你可以避免在你的应用程序中硬编码位图文件的路径名。 执行成功时，它返回位图文件的完整路径名，并带有前缀字符 `@`。 返回值可被用于配置 Tk 和 Tix 部件的 `bitmap` 选项。

`tixCommand.``tix_addbitmapdir`(directory)

  Tix 维护了一个列表以供 `tix_getimage()` 和 `tix_getbitmap()` 方法在其中搜索图像文件。 标准位图目录是 `$TIX_LIBRARY/bitmaps`。 `tix_addbitmapdir()` 方法向该列表添加了 directory。 通过使用此方法，应用程序的图像文件也可使用 `tix_getimage()` 或 `tix_getbitmap()` 方法来定位。

`tixCommand.``tix_filedialog`([dlgclass])

  返回可在来自该应用程序的同不调用之间共享的选择对话框。 此方法将在首次被调用时创建一个选择对话框部件。 此后对 `tix_filedialog()` 的所有调用都将返回该对话框。 可以传入一个字符串形式的可选形参 dlgclass 来指明所需的选择对话框类型。 可用的选项有 `tix`, `FileSelectDialog` 或 `tixExFileSelectDialog`。

`tixCommand.``tix_getimage`(self, name)

  在某个位图目录（参见上文的 `tix_addbitmapdir()` 方法）中定位名为 `name.xpm`, `name.xbm` 或 `name.ppm` 的图像文件。 如果存在多个同名文件（但扩展名不同），则会按照 X 显示的深度选择图像类型：单色显示选择 xbm 图像而彩色显示则选择彩色图像。 通过使用 `tix_getimage()`，你可以避免在你的应用程序中硬编码图像文件的路径名。 当执行成功时，此方法将返回新创建图像的名称，它可被用于配置 Tk 和 Tix 部件的 `image` 选项。

`tixCommand.``tix_option_get`(name)

  获取由 Tix 规格机制维护的选项。

`tixCommand.``tix_resetoptions`(newScheme, newFontSet[, newScmPrio])

  将 Tix 应用程序的规格设置与字体设置分别重置为 newScheme 和 newFontSet。 这只会影响调用此方法之后创建的部件。 因此，最好是在 Tix 应用程序的任何部件被创建之前调用 resetoptions 方法。

  可以给出可选的形参 newScmPrio 来重置由 Tix 规格所设置的 Tk 选项的优先级。

  由于 Tk 处理 X 选项数据库的特别方式，在 Tix 被导入并初始化之后，将无法再使用 `tix_config()` 方法来重置颜色方案和字体集。 而必须要使用 `tix_resetoptions()` 方法。