Skip to main content

25.3. tkinter.tix — Tk的扩展小部件

源代码: Lib/tkinter/tix.py

3.6 版后已移除: 这个Tk扩展是不保留的,不应该在新的代码中使用。请改用 tkinter.ttk


tkinter.tix (Tk接口扩展)模块提供了一组额外的丰富的小部件。虽然标准的Tk库有许多有用的小部件,但它们远远不够完整。 tkinter.tix 库提供了从标准Tk:HListComboBoxControl (a.k.a. SpinBox)和各种可滚动小部件中缺失的大多数常见的小部件。 tkinter.tix 还包括更多的小部件,其通常在广泛的应用中有用:NoteBookFileEntryPanedWindow 等;有超过40个。

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

参见

Tix主页

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

Tix手册页

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

Tix编程指南

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

Tix开发应用程序

Tix应用程序用于开发Tix和Tkinter程序。 Tide应用程序在Tk或Tkinter下工作,包括 TixInspect,一个远程修改和调试Tix/Tk/Tkinter应用程序的检查器。

25.3.1. 使用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安装问题,在继续之前必须解决。使用环境变量 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]

25.3.2. Tix小部件

Tixtkinter 汇编介绍了40多个小部件类。

25.3.2.1. 基本窗口小部件

class tkinter.tix.Balloon

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

class tkinter.tix.ButtonBox

ButtonBox 小部件创建一个按钮的框,例如通常用于 Ok Cancel

class tkinter.tix.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

仪表 小部件可用于显示后台作业的进度,这可能需要很长时间才能执行。

class tkinter.tix.OptionMenu

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

class tkinter.tix.PopupMenu

弹出菜单 小部件可以用作 tk_popup 命令的替换。 Tix PopupMenu 小部件的优点是它需要较少的应用程序代码来操作。

class tkinter.tix.Select

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

class tkinter.tix.StdButtonBox

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

25.3.2.2. 文件选择器

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. 分层ListBox

class tkinter.tix.HList

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

class tkinter.tix.CheckList

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

class tkinter.tix.Tree

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

25.3.2.4. 表格列表框

class tkinter.tix.TList

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

25.3.2.5. 经理窗口小部件

class tkinter.tix.PanedWindow

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

class tkinter.tix.ListNoteBook

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

class tkinter.tix.NoteBook

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

25.3.2.6. 图像类型

tkinter.tix 模块添加:

  • 像素图 功能,所有 tkinter.tixtkinter 小部件从XPM文件创建彩色图像。

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

25.3.2.7. 杂项小部件

class tkinter.tix.InputOnly

InputOnly 小部件接受来自用户的输入,这可以通过 bind 命令(仅限Unix)完成。

25.3.2.8. 表单几何管理器

此外,tkinter.tix 扩展 tkinter 通过提供:

class tkinter.tix.Form

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

25.3.3. 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.xpmname 的位图文件(请参阅 tix_addbitmapdir() 方法)。通过使用 tix_getbitmap(),您可以避免在应用程序中对位图文件的路径名进行硬编码。成功时,它返回位图文件的完整路径名,前缀为字符 @。返回的值可用于配置Tk和Tix小部件的 bitmap 选项。

tixCommand.tix_addbitmapdir(directory)

Tix维护 tix_getimage()tix_getbitmap() 方法将搜索图像文件的目录列表。标准位图目录是 $TIX_LIBRARY/bitmapstix_addbitmapdir() 方法将 directory 添加到此列表中。通过使用该方法,还可以使用 tix_getimage()tix_getbitmap() 方法来定位应用的图像文件。

tixCommand.tix_filedialog([dlgclass])

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

tixCommand.tix_getimage(self, name)

在其中一个位图目录中找到名为 name.xpmname.xbmname.ppm 的映像文件(请参见上面的 tix_addbitmapdir() 方法)。如果存在多个具有相同名称(但不同的扩展名)的文件,则根据X显示器的深度选择图像类型:在单色显示器上选择xbm图像,并且在彩色显示器上选择彩色图像。通过使用 tix_getimage(),您可以避免在应用程序中对图像文件的路径名进行硬编码。成功时,此方法返回新创建的图像的名称,可用于配置Tk和Tix小部件的 image 选项。

tixCommand.tix_option_get(name)

获取由Tix方案机制维护的选项。

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

将Tix应用程序的方案和字体集分别重置为 newSchemenewFontSet。这仅影响在此调用后创建的窗口小部件。因此,最好在Tix应用程序中创建任何小部件之前调用resetoptions方法。

可以给出可选参数 newScmPrio 以重置由Tix方案设置的Tk选项的优先级。

由于Tk处理X选项数据库的方式,在导入和引入Tix之后,不可能使用 tix_config() 方法重置颜色方案和字体集。相反,必须使用 tix_resetoptions() 方法。