# 25.3. `tkinter.tix` - Tk的扩展小部件

源代码： Lib / tkinter / tix.py

`tkinter.tix`（Tk接口扩展）模块提供了一组额外的丰富的小部件。虽然标准的Tk库有许多有用的小部件，但它们远远不够完整。`tkinter.tix`库提供了标准Tk中缺少的大多数常用窗口小部件：`HList`，`ComboBox`，`Control` SpinBox）和各种可滚动小部件。`tkinter.tix`还包括许多通用于广泛应用的小部件：`NoteBook`，`FileEntry`，`PanedWindow`

通过所有这些新的小部件，您可以将新的交互技术引入到应用程序中，创建更有用和更直观的用户界面。您可以通过选择最合适的小部件来设计应用程序，以满足应用程序和用户的特殊需求。

也可以看看

Tix首页
  `Tix`的主页。包括其他文档和下载的链接。
Tix Man Pages
  在线版本的手册页和参考资料。
Tix编程指南
  在线版本的程序员参考资料。
Tix开发应用程序
  Tix应用程序开发Tix和Tkinter程序。潮汐应用程序在Tk或Tkinter下工作，并包括TixInspect，用于远程修改和调试Tix / Tk / Tkinter应用程序。

## 25.3.1. Using Tix

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

  Tix的顶层小部件，其大部分代表应用程序的主窗口。它有一个相关的Tcl解释器。

  `tkinter.tix`模块中的类对`tkinter`中的类进行子类化。前者导入后者，因此要使用`tkinter.tix`与Tkinter，所有你需要做的是导入一个模块。通常，您可以直接导入`tkinter.tix`，并用`tix.Tk`替换toplevel调用`tkinter.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')

如果这失败，您有一个Tk安装问题，在继续之前必须解决。Use the environment variable `TIX_LIBRARY` to point to the installed Tix library directory, and make sure you have the dynamic object library (`tix8183.dll` or `libtix8183.so`) in the same directory that contains your Tk dynamic object library (`tk8183.dll` or `libtk8183.so`). 具有动态对象库的目录也应该有一个名为`pkgIndex.tcl`（区分大小写）的文件，其中包含以下行：

    package ifneeded Tix 8.1 [list load "[file join $dir tix8183.dll]" Tix]

## 25.3.2. Tix Widgets

Tix向`tkinter`节目介绍了超过40个窗口小部件类。

### 25.3.2.1. Basic Widgets

class `tkinter.tix.``Balloon`

  A 气球会弹出小部件以提供帮助。当用户将光标移动到已经绑定了“气球”窗口小部件的窗口小部件中时，屏幕上将显示一个带有描述性消息的小弹出窗口。

class `tkinter.tix.``ButtonBox`

  ButtonBox小部件创建一个按钮，例如通常用于`确定 取消`的按钮。

class `tkinter.tix.``ComboBox`

  ComboBox小部件类似于MS Windows中的组合框控件。用户可以通过键入输入子窗口小部件或从列表框子窗口小部件中选择来选择选项。

class `tkinter.tix.``Control`

  控件小部件也称为`SpinBox`小部件。用户可以通过按两个箭头按钮或直接将值输入到条目中来调整值。将根据用户定义的上限和下限检查新值。

class `tkinter.tix.``LabelEntry`

  LabelEntry小部件将一个输入小部件和一个标签封装到一个巨型小部件中。它可以用来简化“entry-form”类型的接口的创建。

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`

  选择小部件是按钮子小部件的容器。它可用于为用户提供收音箱或复选框风格的选择选项。

class `tkinter.tix.``StdButtonBox`

  StdButtonBox小部件是一组用于Motif式对话框的标准按钮。

### 25.3.2.2. File Selectors

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小部件可用于输入文件名。用户可以手动键入文件名。或者，用户可以按下该条目旁边的按钮小部件，这将打开文件选择对话框。

### 25.3.2.3. Hierarchical ListBox

class `tkinter.tix.``HList`

  HList小部件可用于显示具有层次结构的任何数据，例如文件系统目录树。列表条目缩进，并通过分支线根据它们在层次结构中的位置连接。

class `tkinter.tix.``CheckList`

  CheckList小部件显示用户要选择的项目列表。CheckList的行为类似于Tk检查按钮或单选按钮小部件，除了它能够处理比检查按钮或单选按钮更多的项目。

class `tkinter.tix.``Tree`

  树小部件可用于以树形式显示分层数据。用户可以通过打开或关闭树的部分来调整树的视图。

### 25.3.2.4. Tabular ListBox

class `tkinter.tix.``TList`

  TList小部件可用于以表格格式显示数据。`TList`小部件的列表条目与Tk列表框小部件中的条目类似。主要的区别是：（1）`TList`小部件可以以二维格式显示列表条目，以及（2）可以使用图形图像以及列表条目的多种颜色和字体。

### 25.3.2.5. Manager Widgets

class `tkinter.tix.``PanedWindow`

  PanedWindow小部件允许用户交互式操作几个窗格的大小。窗格可以垂直或水平布置。用户通过在两个窗格之间拖动调整大小手柄来更改窗格的大小。

class `tkinter.tix.``ListNoteBook`

  ListNoteBook小部件与`TixNoteBook`小部件非常相似：它可以用于使用笔记本隐喻在有限的空间中显示多个窗口。笔记本被分成一堆页（窗口）。一次只能显示其中一个页面。用户可以通过在`hlist`子窗口小部件中选择所需页面的名称来浏览这些页面。

class `tkinter.tix.``NoteBook`

  NoteBook小部件可用于在有限的空间中使用笔记本隐喻显示许多窗口。笔记本分为一堆页面。一次只能显示其中一个页面。用户可以通过选择NoteBook小部件顶部的可视“选项卡”来浏览这些页面。

### 25.3.2.6. Image Types

`tkinter.tix`模块添加：

- 对所有`tkinter.tix`和`tkinter`小部件的pixmap功能，从XPM文件创建彩色图像。
- 复合图像类型可用于创建由多个水平线组成的图像；每行由从左到右排列的一系列项目（文本，位图，图像或空格）组成。例如，复合图像可以用于在Tk `Button`小部件中同时显示位图和文本字符串。

### 25.3.2.7. Miscellaneous Widgets

class `tkinter.tix.``InputOnly`

  InputOnly小部件接受用户的输入，可以使用`bind`命令（仅限Unix）完成。

### 25.3.2.8. Form Geometry Manager

此外，通过提供以下内容，`tkinter.tix`增加`tkinter`

class `tkinter.tix.``Form`

  基于所有Tk小部件的附件规则的表单几何管理器。

## 25.3.3. Tix Commands

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)

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

`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()`方法会将目录添加到此列表中。通过使用此方法，还可以使用`tix_getimage()`或`tix_getbitmap()`方法来定位应用程序的图像文件。

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

  返回可在此应用程序的不同调用之间共享的文件选择对话框。此方法将在第一次调用时创建文件选择对话框窗口部件。所有后续调用`tix_filedialog()`将返回此对话框。可选的dlgclass参数可以作为字符串传递到指定期望什么类型的文件选择对话框窗口部件。可能的选项为`tix`，`FileSelectDialog`或`tixExFileSelectDialog`。

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

  在其中一个位图目录中找到名称`name.xpm`，`name.xbm`或`name.ppm`的图像文件（请参阅`tix_addbitmapdir()`方法）。如果存在多个具有相同名称（但不同的扩展名）的文件，则根据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()`方法。