24.3. Tix — Tk 的扩展小部件

Tix(Tk 接口扩展)模块提供了一组额外的小部件。尽管标准的 Tk 库具有许多有用的小部件,但它们远非完整。 Tix库提供了标准 Tk 中缺少的大多数常用控件:HListComboBoxControl(也称为 SpinBox)和各种可滚动的控件。 Tix还包括许多其他小部件,这些小部件通常在广泛的应用程序中有用:NoteBookFileEntryPanedWindow等;其中有 40 多个。

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

Note

Tix在 Python 3 中已重命名为tkinter.tix。在将源转换为 Python 3 时,2to3工具将自动适应导入。

See also

  • Tix Homepage

  • Tix的主页。这包括其他文档和下载的链接。

  • Tix 手册页

  • 手册页和参考资料的在线版本。

  • Tix 编程指南

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

  • Tix 开发应用

  • 用于开发 Tix 和 Tkinter 程序的 Tix 应用程序。潮汐应用程序可以在 Tk 或 Tkinter 下运行,并包括 TixInspect ,它是一个检查器,可以远程修改和调试 Tix/Tk/Tkinter 应用程序。

24.3.1. 使用 Tix

    • class * Tix. Tix(* screenName * [,* baseName * [,* className *]])
    • Tix 的顶级小部件,主要表示应用程序的主窗口。它具有关联的 Tcl 解释器。

Tix模块中的类是Tkinter模块中的类的子类。前者导入后者,因此要在 Tkinter 中使用Tix,您要做的就是导入一个模块。通常,您只需导入Tix,然后将Tkinter.Tk的顶级调用替换为Tix.Tk

import Tix
from Tkconstants import *
root = Tix.Tk()

要使用Tix,您必须安装Tix小部件,通常与 Tk 小部件的安装同时进行。要测试您的安装,请try以下操作:

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

如果失败,则您有一个 Tk 安装问题,在 continue 之前必须解决。使用环境变量 TIX_LIBRARY指向已安装的Tix库目录,并确保在包含 Tk 动态对象库(tk8183.dlllibtk8183.so)的同一目录中具有动态对象库(tix8183.dlllibtix8183.so)。动态对象库的目录还应该有一个名为pkgIndex.tcl(区分大小写)的文件,其中包含以下行:

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

24.3.2. Tix 小部件

TixTkinter曲目库介绍了 40 多个小部件类。标准发行版的Demo/tix目录中有所有Tix小部件的演示。

24.3.2.1. 基本小部件

  • 类别 Tix. Balloon

    • 弹出窗口Balloon的窗口以提供帮助。当用户将光标移动到绑定有 Balloon 控件的控件内部时,屏幕上会显示一个带有描述性消息的小弹出窗口。
  • 类别 Tix. ButtonBox

    • ButtonBox小部件创建一个按钮框,例如Ok Cancel常用的按钮。
  • 类别 Tix. ComboBox

    • ComboBox小部件类似于 MS Windows 中的组合框控件。用户可以pass Importing 条目子小部件或从列表框子小部件中进行选择来选择一个选项。
  • 类别 Tix. Control

    • Control小部件也称为SpinBox小部件。用户可以pass按下两个箭头按钮或直接在条目中 Importing 值来调整值。将根据用户定义的上限和下限检查新值。
  • 类别 Tix. LabelEntry

    • LabelEntry小部件将一个 Importing 小部件和一个标签打包到一个大型小部件中。它可以用来简化“条目形式”类型接口的创建。
  • 类别 Tix. LabelFrame

    • LabelFrame小部件将框架小部件和标签打包到一个大型小部件中。要在 LabelFrame 小部件内创建小部件,请相对于frame子小部件创建新的小部件,并在frame子小部件内进行 Management。
  • 类别 Tix. Meter

    • Meter小部件可用于显示后台作业的进度,该进度可能需要很长时间才能执行。
  • 类别 Tix. OptionMenu

  • 类别 Tix. PopupMenu

    • PopupMenu小部件可以替代tk_popup命令。 Tix PopupMenu小部件的优点是它需要较少的应用程序代码来进行操作。
  • 类别 Tix. Select

    • Select小部件是按钮子小部件的容器。它可用于为用户提供选择选项的单选框或复选框样式。
  • 类别 Tix. StdButtonBox

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

24.3.2.2. 文件 selectors

  • 类别 Tix. DirList

    • DirList小部件显示目录,其先前目录及其子目录的列表视图。用户可以选择列表中显示的目录之一,也可以切换到另一个目录。
  • 类别 Tix. DirTree

    • DirTree小部件显示目录,其先前目录及其子目录的树视图。用户可以选择列表中显示的目录之一,也可以切换到另一个目录。
  • 类别 Tix. DirSelectDialog

    • DirSelectDialog小部件在对话框窗口中显示文件系统中的目录。用户可以使用此对话框窗口浏览文件系统以选择所需的目录。
  • 类别 Tix. DirSelectBox

    • DirSelectBox与标准 Motif™目录选择框相似。通常用于用户选择目录。 DirSelectBox 将最近选择的目录存储到 ComboBox 小部件中,以便可以再次快速选择它们。
  • 类别 Tix. ExFileSelectBox

    • ExFileSelectBox小部件通常嵌入在 tixExFileSelectDialog 小部件中。它为用户提供了一种选择文件的便捷方法。 ExFileSelectBox小部件的样式与 MS Windows 3.1 上的标准文件对话框非常相似。
  • 类别 Tix. FileSelectBox

    • FileSelectBox与标准 Motif™文件选择框相似。通常用于用户选择文件。 FileSelectBox 将最近选择的文件存储到ComboBox小部件中,以便可以再次快速选择它们。
  • 类别 Tix. FileEntry

    • FileEntry小部件可用于 Importing 文件名。用户可以手动 Importing 文件名。或者,用户可以按下条目旁边的按钮小部件,这将弹出一个文件选择对话框。

24.3.2.3. 分层列表框

  • 类别 Tix. HList

    • HList小部件可用于显示具有分层结构的任何数据,例如文件系统目录树。列表条目根据其在层次结构中的位置缩进并pass分支线连接。
  • 类别 Tix. CheckList

    • CheckList小部件显示用户要选择的项目列表。 CheckList 的行为类似于 Tk 的 checkbutton 或 radiobutton 窗口小部件,不同之处在于它能够处理比 checkbutton 或 radiobutton 更多的项目。
  • 类别 Tix. Tree

    • Tree小部件可用于以树形式显示层次结构数据。用户可以pass打开或关闭树的部分来调整树的视图。

24.3.2.4. 表格列表框

  • 类别 Tix. TList
    • TList小部件可用于以表格格式显示数据。 TList小部件的列表条目与 Tk 列表框小部件中的条目相似。主要区别在于(1)TList小部件可以以二维格式显示列表条目,并且(2)您可以使用图形图像以及列表条目的多种颜色和字体。

24.3.2.5. Manager 小部件

  • 类别 Tix. PanedWindow

    • PanedWindow小部件允许用户交互地操纵几个窗格的大小。窗格可以垂直或水平排列。用户pass在两个窗格之间拖动调整大小手柄来更改窗格的大小。
  • 类别 Tix. ListNoteBook

    • ListNoteBook小部件与TixNoteBook小部件非常相似:可以使用笔记本隐喻在有限的空间中显示许多窗口。笔记本分为页面(窗口)堆栈。一次只能显示这些页面之一。用户可以pass在hlist子小部件中选择所需页面的名称来浏览这些页面。
  • 类别 Tix. NoteBook

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

24.3.2.6. 图片类型

Tix模块添加:

  • 所有TixTkinter小部件具有pixmapFunction,可从 XPM 文件创建彩色图像。

  • Compound图片类型可用于创建由多条水平线组成的图片;每行由从左到右排列的一系列项目(文本,位图,图像或空格)组成。例如,复合图像可用于在 Tk Button小部件中同时显示位图和文本字符串。

24.3.2.7. 杂项小部件

  • 类别 Tix. InputOnly
    • InputOnly小部件将接受来自用户的 Importing,可以使用bind命令(仅限 Unix)完成。

24.3.2.8. 表格几何 Manager

此外,Tixpass提供以下内容来增强Tkinter

  • 类别 Tix. Form
    • Form几何 Management 器基于所有 Tk 小部件的附件规则。

24.3.3. 提示命令

  • 类别 Tix. tixCommand
    • tix commands提供对Tix的内部状态和Tix应用程序上下文的其他元素的访问。这些方法操纵的大多数信息都与整个应用程序有关,或者与屏幕或显示器有关,而不是与特定窗口有关。

要查看当前设置,常见用法是:

import Tix
root = Tix.Tk()
print root.tix_configure()
  • tixCommand. tix_configure(* cnf = None ** kw *)

    • 查询或修改 Tix 应用程序上下文的配置选项。如果未指定选项,则返回字典所有可用选项。如果指定的 option 没有值,则该方法返回一个描述一个命名选项的列表(如果未指定 option,则该列表与返回值的相应子列表相同)。如果指定了一个或多个选项-值对,则该方法会将给定的选项修改为具有给定的值;在这种情况下,该方法返回一个空字符串。选项可以是任何配置选项。
  • tixCommand. tix_cget(* option *)

    • 返回由* option *给出的配置选项的当前值。选项可以是任何配置选项。
  • tixCommand. tix_getbitmap(* name *)

    • 在一个位图目录中找到名称为name.xpmname的位图文件(请参见tix_addbitmapdir()方法)。pass使用tix_getbitmap(),可以避免在应用程序中对位图文件的路径名进行硬编码。成功后,它将返回位图文件的完整路径名,并以字符@为前缀。返回的值可用于配置 Tk 和 Tix 小部件的bitmap选项。
  • tixCommand. tix_addbitmapdir(目录)

  • tixCommand. tix_filedialog([* dlgclass *])

    • 返回可以在此应用程序的不同调用之间共享的文件选择对话框。首次调用时,此方法将创建一个文件选择对话框窗口小部件。随后所有对tix_filedialog()的调用将返回此对话框。可以将可选的 dlgclass 参数作为字符串传递,以指定所需的文件选择对话框窗口小部件类型。可能的选项是tixFileSelectDialogtixExFileSelectDialog
  • tixCommand. tix_getimage(* self name *)

    • 在一个位图目录中找到名称为name.xpmname.xbmname.ppm的图像文件(请参见上面的tix_addbitmapdir()方法)。如果存在多个具有相同名称(但 extensions 不同)的文件,则根据 X 显示器的深度选择图像类型:在单色显示器上选择 xbm 图像,在彩色显示器上选择彩色图像。pass使用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()方法。