tkinter.ttk ---Tk主题小工具

源代码: Lib/tkinter/ttk.py


这个 tkinter.ttk 模块提供对tk 8.5中介绍的tk主题小部件集的访问。如果没有根据tk 8.5编译python,那么在 Tile 已安装。前一种使用tk 8.5的方法提供了额外的好处,包括x11下的抗锯齿字体渲染和窗口透明度(需要x11上的合成窗口管理器)。

的基本理念 tkinter.ttk

参见

Tk Widget Styling Support

介绍对tk的主题化支持的文档

使用TTK

要开始使用TTK,请导入其模块:

from tkinter import ttk

要覆盖基本的tk小部件,导入应遵循tk导入::

from tkinter import *
from tkinter.ttk import *

这个代码导致 tkinter.ttk 小部件 (ButtonCheckbuttonEntryFrameLabelLabelFrameMenubuttonPanedWindowRadiobuttonScaleScrollbar )自动替换tk小部件。

这直接得益于使用新的小部件,它可以在不同的平台上提供更好的外观和感觉;但是,替换的小部件并不完全兼容。主要的区别是,小部件选项(如“fg”、“bg”和其他与小部件样式相关的选项)不再出现在TTK小部件中。相反,使用 ttk.Style 类以改进样式效果。

参见

Converting existing applications to use Tile widgets

一本专著(使用tcl术语),介绍移动应用程序以使用新的小部件时通常遇到的差异。

TTK控件

TTK附带18个小部件,其中12个已经存在于Tkinter中: ButtonCheckbuttonEntryFrameLabelLabelFrameMenubuttonPanedWindowRadiobuttonScaleScrollbarSpinbox . 另外六个是新的: ComboboxNotebookProgressbarSeparatorSizegripTreeview . 它们都是 Widget .

使用TTK小部件可以改善应用程序的外观和感觉。如上所述,在样式的编码方式上存在差异。

TK代码:

l1 = tkinter.Label(text="Test", fg="black", bg="white")
l2 = tkinter.Label(text="Test", fg="black", bg="white")

TTK码:

style = ttk.Style()
style.configure("BW.TLabel", foreground="black", background="white")

l1 = ttk.Label(text="Test", style="BW.TLabel")
l2 = ttk.Label(text="Test", style="BW.TLabel")

有关的详细信息 TtkStyling, 见 Style 类文档。

小装置

ttk.Widget 定义由tk主题的小部件支持的标准选项和方法,不应该直接实例化。

标准选项

所有的 ttk 小部件接受以下选项:

期权

描述

指定窗口类。类用于在选项数据库中查询窗口的其他选项、确定窗口的默认bindtags以及选择小部件的默认布局和样式。此选项是只读的,只能在创建窗口时指定。

光标

指定用于小部件的鼠标光标。如果设置为空字符串(默认),则为父窗口小部件继承光标。

焦点焦点

确定在键盘遍历期间窗口是否接受焦点。返回0、1或空字符串。如果返回0,则表示在键盘遍历期间应完全跳过窗口。如果为1,则表示只要窗口可见,它就应该接收输入焦点。空字符串意味着遍历脚本决定是否将焦点放在窗口上。

风格

可用于指定自定义小部件样式。

可滚动小部件选项

滚动条控制的小部件支持以下选项。

期权

描述

XScRelp命令

用于与水平滚动条通信。

当小部件窗口中的视图更改时,小部件将基于scrollcommand生成tcl命令。

通常,此选项由方法组成 Scrollbar.set() 一些滚动条。这将使滚动条在窗口中的视图更改时更新。

yScRelp命令

用于与垂直滚动条通信。有关更多信息,请参见上文。

标签选项

标签、按钮和其他类似按钮的小部件支持以下选项。

期权

描述

文本

指定要在小部件中显示的文本字符串。

文本变量

指定将使用其值代替文本选项资源的名称。

下划线

如果设置,则指定要在文本字符串中加下划线的字符的索引(从0开始)。下划线字符用于记忆激活。

形象

指定要显示的图像。这是一个包含1个或多个元素的列表。第一个元素是默认的图像名称。如果statespec/值对的序列由 Style.map() ,指定当小部件处于特定状态或状态组合时要使用的不同图像。列表中的所有图像都应具有相同的大小。

复合

指定在同时存在文本和图像选项的情况下,如何相对于文本显示图像。有效值为:

  • 文本:仅显示文本

  • 图像:仅显示图像

  • 上、下、左、右:分别在文本的上方、下方、左侧或右侧显示图像。

  • 无:默认值。显示图像(如果存在),否则显示文本。

宽度

如果大于零,指定在字符宽度中为文本标签分配多少空间;如果小于零,则指定最小宽度。如果为零或未指定,则使用文本标签的自然宽度。

兼容性选项

期权

描述

状态

可以设置为“正常”或“禁用”,以控制“禁用”状态位。这是一个只写选项:设置它会更改小部件状态,但是 Widget.state() 方法不影响此选项。

控件状态

小部件状态是独立状态标志的位图。

描述

积极的

鼠标光标在小部件上,按下鼠标按钮将导致某些操作发生。

残疾人

程序控制下禁用小部件

集中

小部件具有键盘焦点

按下

小部件正在被按下

挑选出来的

“on”、“true”或“current”用于“checkbuttons”和“radiobuttons”等内容

背景

Windows和Mac具有“活动”或前台窗口的概念。这个 背景 在后台窗口中为小部件设置状态,并为前台窗口中的小部件清除状态。

只读

小部件不允许用户修改

交替的

特定于小部件的备用显示格式

无效

小部件的值无效

状态规范是一系列状态名,可以选择在其前面加一个感叹号,表示位已关闭。

ttk.Widget

除了下述方法外, ttk.Widget 支持这些方法 tkinter.Widget.cget()tkinter.Widget.configure() .

class tkinter.ttk.Widget
identify(x, y)

返回位置处元素的名称 x y ,如果点不在任何元素中,则为空字符串。

xy 是相对于小部件的像素坐标。

instate(statespec, callback=None, *args, **kw)

测试小部件的状态。如果未指定回调,则返回 True 如果小部件状态匹配 状态图False 否则。如果指定了回调,则如果小部件状态匹配,则使用参数调用回调 状态图 .

state(statespec=None)

修改或查询小部件状态。如果 状态图 指定,根据它设置小部件状态并返回新的 状态图 指示更改了哪些标志。如果 状态图 未指定,返回当前启用的状态标志。

状态图 通常是列表或元组。

组合框

这个 ttk.Combobox 小部件将文本字段与值的下拉列表组合在一起。这个小部件是 Entry .

除了继承自 WidgetWidget.cget()Widget.configure()Widget.identify()Widget.instate()Widget.state() 以及以下继承自 EntryEntry.bbox()Entry.delete()Entry.icursor()Entry.index()Entry.insert()Entry.selection()Entry.xview() ,它还有一些其他方法,如 ttk.Combobox .

选项

此小部件接受以下特定选项:

期权

描述

出口选择

布尔值。如果设置,小部件选择将链接到窗口管理器选择(例如,可以通过调用misc.selection_get返回)。

证明正当

指定文本在小部件中的对齐方式。“左”、“中”或“右”之一。

高度

以行为单位指定弹出列表框的高度。

后命令

在显示值之前立即调用的脚本(可能已用misc.register注册)。它可以指定要显示的值。

状态

“正常”、“只读”或“禁用”之一。在“只读”状态下,不能直接编辑值,用户只能从下拉列表中选择值。在“正常”状态下,文本字段可直接编辑。在“禁用”状态下,不可能进行交互。

文本变量

指定其值链接到小部件值的名称。每当与该名称关联的值更改时,小部件值就会更新,反之亦然。见 tkinter.StringVar .

价值观

指定要在下拉列表框中显示的值列表。

宽度

指定一个整数值,以小部件字体的平均大小字符表示输入窗口的所需宽度。

虚拟事件

组合框小部件生成一个 <<ComboboxSelected>> 用户从值列表中选择元素时的虚拟事件。

ttk.Combobox

class tkinter.ttk.Combobox
current(newindex=None)

如果 奈温德克斯 如果指定,则将组合框值设置为元素位置 奈温德克斯 . 否则,返回当前值的索引,如果当前值不在值列表中,则返回-1。

get()

返回组合框的当前值。

set(value)

将组合框的值设置为 value .

纺丝箱

这个 ttk.Spinbox 控件是一个 ttk.Entry 增加和减少箭头。它可以用于字符串值的数字或列表。这个小部件是 Entry .

除了继承自 WidgetWidget.cget()Widget.configure()Widget.identify()Widget.instate()Widget.state() 以及以下继承自 EntryEntry.bbox()Entry.delete()Entry.icursor()Entry.index()Entry.insert()Entry.xview() ,它还有一些其他方法,如 ttk.Spinbox .

选项

此小部件接受以下特定选项:

期权

描述

浮动值。如果设置,这是递减按钮将递减到的最小值。必须拼写为 from_ 当用作参数时,因为 from 是python关键字。

浮动值。如果设置,这是递增按钮将递增的最大值。

增量

浮动值。指定递增/递减按钮更改值的量。默认为1.0。

价值观

字符串或浮点值的序列。如果指定,递增/递减按钮将按此顺序循环显示项目,而不是递增或递减数字。

布尔值。如果 True ,递增和递减按钮将从 to 价值 from 价值还是 from 价值 to 值。

格式

字符串值。这指定由递增/递减按钮设置的数字格式。它的格式必须为“%w.p f”,其中w是值的填充宽度,p是精度,而“%”和“f”是文字。

命令

python可调用。无论何时按下递增或递减按钮,都将不带参数调用。

虚拟事件

spinbox小部件生成一个 <<Increment>> 当用户按下“向上”时的虚拟事件,以及 <<Decrement>> 当用户按下<down>时发生虚拟事件。

ttk.Spinbox

class tkinter.ttk.Spinbox
get()

返回数字显示框的当前值。

set(value)

将数字显示框的值设置为 value .

笔记本

TTK笔记本小部件管理一组窗口,一次显示一个窗口。每个子窗口都与一个选项卡关联,用户可以选择该选项卡来更改当前显示的窗口。

选项

此小部件接受以下特定选项:

期权

描述

高度

如果存在且大于零,则指定窗格区域的所需高度(不包括内部填充或制表符)。否则,将使用所有窗格的最大高度。

衬垫

指定要在笔记本外部添加的额外空间量。填充是一个长达四个长度规格的列表,从左上到右下。如果指定的元素少于四个,则底部默认为顶部,右侧默认为左侧,顶部默认为左侧。

宽度

如果存在且大于零,则指定窗格区域的所需宽度(不包括内部填充)。否则,将使用所有窗格的最大宽度。

Tab期权

选项卡还有特定选项:

期权

描述

状态

“正常”、“禁用”或“隐藏”。如果“禁用”,则选项卡不可选。如果“隐藏”,则不显示选项卡。

粘性的

指定子窗口在窗格区域中的位置。值是包含零个或多个字符“n”、“s”、“e”或“w”的字符串。每个字母指的是子项车窗将贴在的一侧(北、南、东或西),根据 grid() 几何管理器。

衬垫

指定要在笔记本和此窗格之间添加的额外空间量。语法与此小部件使用的选项填充相同。

文本

指定要在选项卡中显示的文本。

形象

指定要在选项卡中显示的图像。请参见中描述的选项图像 Widget .

复合

指定在同时存在选项文本和图像的情况下,如何相对于文本显示图像。参见 Label Options 法律价值。

下划线

指定要在文本字符串中加下划线的字符的索引(从0开始)。带下划线的字符用于助记符激活,如果 Notebook.enable_traversal() 被称为。

选项卡标识符

标签有几种方法 ttk.Notebook 可采用以下任何形式:

  • 介于零和制表符数目之间的整数

  • 子窗口的名称

  • 表格“@x,y”的位置说明,用于标识选项卡

  • 文本字符串“current”,用于标识当前选定的选项卡

  • 文本字符串“end”,返回选项卡数(仅对 Notebook.index()

虚拟事件

这个小部件生成一个 <<NotebookTabChanged>> 选择新选项卡后的虚拟事件。

ttk.Notebook

class tkinter.ttk.Notebook
add(child, **kw)

将新选项卡添加到笔记本。

如果窗口当前由笔记本管理但被隐藏,则它将恢复到以前的位置。

Tab Options 有关可用选项的列表。

forget(tab_id)

删除由指定的选项卡 tab_id ,取消映射和取消管理关联的窗口。

hide(tab_id)

隐藏由指定的选项卡 tab_id .

该选项卡将不显示,但相关窗口仍由笔记本管理并记住其配置。隐藏的选项卡可以用 add() 命令。

identify(x, y)

返回位置处的tab元素的名称 xy 或空字符串(如果没有)。

index(tab_id)

返回由指定的选项卡的数字索引 tab_id 或选项卡总数,如果 tab_id 是字符串“end”。

insert(pos, child, **kw)

在指定位置插入窗格。

pos 是字符串“end”、整数索引或托管子级的名称。如果 小孩 已由笔记本管理,将其移动到指定位置。

Tab Options 有关可用选项的列表。

select(tab_id=None)

选择指定的 tab_id .

将显示关联的子窗口,并取消映射以前选择的窗口(如果不同)。如果 tab_id 如果省略,则返回当前所选窗格的小部件名称。

tab(tab_id, option=None, **kw)

查询或修改特定 tab_id .

如果 kw 如果未给定,则返回选项卡选项值的字典。如果 option 如果指定,则返回 option . 否则,将选项设置为相应的值。

tabs()

返回笔记本管理的窗口列表。

enable_traversal()

为包含此笔记本的顶级窗口启用键盘遍历。

这将扩展包含笔记本的顶级窗口的绑定,如下所示:

  • Control-Tab :选择当前所选选项卡之后的选项卡。

  • Shift-Control-Tab :选择当前所选选项卡之前的选项卡。

  • Alt-K 哪里 K 是任何选项卡的助记符(带下划线),将选择该选项卡。

可以为遍历启用单个顶级中的多个笔记本,包括嵌套的笔记本。但是,只有当所有窗格都具有作为主控形状的笔记本时,笔记本遍历才能正常工作。

进度条

这个 ttk.Progressbar 小部件显示长期运行操作的状态。它可以在两种模式下工作:1)显示相对于要完成的总工作量已完成的量的确定模式和2)提供动画显示的不确定模式,以让用户知道工作正在进行。

选项

此小部件接受以下特定选项:

期权

描述

东方的

“水平”或“垂直”之一。指定进度条的方向。

长度

指定进度条长轴的长度(水平时为宽,垂直时为高)。

模式

“确定的”或“不确定的”之一。

最大限度

指定最大值的数字。默认为100。

价值

进度条的当前值。在“确定”模式下,这表示已完成的工作量。在“不确定”模式下,它被解释为模 最大限度 ;也就是说,当进度条的值增加时,进度条完成一个“循环”。 最大限度 .

变量

链接到选项值的名称。如果指定,则在修改进度条时,进度条的值将自动设置为此名称的值。

阶段

只读选项。当该小部件的值大于0并且在确定模式下小于最大值时,该小部件会定期增加该选项的值。当前主题可以使用此选项来提供其他动画效果。

ttk.Progressbar

class tkinter.ttk.Progressbar
start(interval=None)

开始自动增量模式:调度调用 Progressbar.step() 每一个 间隔 毫秒。如果省略, 间隔 默认为50毫秒。

step(amount=None)

进度条值的增量为 数量 .

数量 如果省略,则默认为1.0。

stop()

停止自动递增模式:取消由 Progressbar.start() 对于此进度条。

分离器

这个 ttk.Separator 小部件显示水平或垂直分隔条。

除了继承自 ttk.Widget .

选项

此小部件接受以下特定选项:

期权

描述

东方的

“水平”或“垂直”之一。指定分隔符的方向。

大握柄

这个 ttk.Sizegrip 小部件(也称为成长框)允许用户通过按下和拖动夹点来调整包含顶层窗口的大小。

除了继承自 ttk.Widget .

平台特定注释

  • 在MacOSX上,默认情况下,顶级窗口自动包含内置大小的夹点。添加一个 Sizegrip 是无害的,因为内置的握把只会掩盖小部件。

漏洞

  • 如果指定了包含顶层的位置相对于屏幕的右侧或底部(例如…),则 Sizegrip 小部件不会调整窗口大小。

  • 这个小部件只支持“东南”调整大小。

树形图

这个 ttk.Treeview 小部件显示项目的层次集合。每个项目都有一个文本标签、一个可选图像和一个可选的数据值列表。数据值显示在树标签后的连续列中。

通过设置widget选项,可以控制数据值的显示顺序。 displaycolumns . 树小部件还可以显示列标题。可以通过小部件选项列中列出的数字或符号名称访问列。见 Column Identifiers .

每个项目都由唯一的名称标识。如果调用者没有提供项目ID,该小部件将生成它们。有一个可分辨的根项,名为 {{}} .根项本身不显示;其子项显示在层次结构的顶层。

每个项还具有标记列表,这些标记可用于将事件绑定与单个项关联,并控制项的外观。

TreeView小部件支持水平和垂直滚动,根据中描述的选项 Scrollable Widget Options 方法 Treeview.xview()Treeview.yview() .

选项

此小部件接受以下特定选项:

期权

描述

列标识符列表,指定列数及其名称。

显示列

列标识符列表(符号索引或整数索引),指定显示的数据列及其显示顺序,或字符串“all”。

高度

指定应可见的行数。注意:请求的宽度由列宽之和决定。

衬垫

指定小部件的内部填充。填充是一个最多包含四个长度规格的列表。

选择模式

控制内置类绑定如何管理选择。“扩展”、“浏览”或“无”之一。如果设置为“扩展”(默认),则可以选择多个项目。如果“浏览”,一次只选择一个项目。如果“无”,则不会更改选择。

请注意,应用程序代码和标记绑定可以根据需要设置选择,而不考虑此选项的值。

显示

包含以下零个或多个值的列表,指定要显示的树元素。

  • 树:在列0中显示树标签。

  • 标题:显示标题行。

默认为“树标题”,即显示所有元素。

Note :column 0始终引用树列,即使未指定show=“tree”。

项目选项

可以为insert和item widget命令中的项指定以下项选项。

期权

描述

文本

要为项显示的文本标签。

形象

显示在标签左侧的tk图像。

价值观

与项关联的值列表。

每个项的值数应该与小部件选项列的值数相同。如果值少于列,则假定其余值为空。如果值多于列,则忽略多余的值。

打开

True/False 指示应显示还是隐藏项的子项的值。

标签

与此项目关联的标记列表。

标记选项

可以在标记上指定以下选项:

期权

描述

前景

指定文本前景色。

背景

指定单元格或项的背景色。

字体

指定绘制文本时使用的字体。

形象

指定项的图像选项为空时的项图像。

列标识符

列标识符采用以下任何形式:

  • 列列表选项中的符号名。

  • 整数n,指定第n个数据列。

  • n形式的字符串,其中n是整数,指定第n个显示列。

笔记:

  • 项的选项值的显示顺序可能与它们的存储顺序不同。

  • 列0始终引用树列,即使未指定show=“tree”。

数据列号是项目选项值列表的索引;显示列号是显示值的树中的列号。树标签显示在第0列中。如果未设置选项displaycolumns,则数据列n将显示在列n+1中。再一次, column #0 always refers to the tree column .

虚拟事件

TreeView小部件生成以下虚拟事件。

事件

描述

<<treeviewsselect>>

每当选择更改时生成。

<<treeviewopen>>

在将焦点项设置为open=true之前生成。

<<treeviewclose>>

仅在将焦点项设置为open=false之后生成。

这个 Treeview.focus()Treeview.selection() 方法可用于确定受影响的一个或多个项目。

ttk.Treeview

class tkinter.ttk.Treeview
bbox(item, column=None)

返回指定的绑定框(相对于TreeView小部件的窗口) item 形式(x,y,width,height)。

如果 如果指定,则返回该单元格的边界框。如果 item 不可见(即,如果它是已关闭项的后代或在屏幕外滚动),则返回空字符串。

get_children(item=None)

返回属于的子级列表 item .

如果 item 未指定,返回根子级。

set_children(item, *newchildren)

替换 item 的子项 新生子项 .

有子项在场 item 不存在于 新生子项 与树分离。没有项目 新生子项 可能是 item . 请注意,没有指定 新生子项 导致分离 item 子项们。

column(column, option=None, **kw)

查询或修改指定的 .

如果 kw 如果未给定,则返回列选项值的dict。如果 option 然后指定该值 option 返回。否则,将选项设置为相应的值。

有效的选项/值为:

  • 身份证件

    返回列名称。这是只读选项。

  • 锚定:标准tk锚定值之一。

    指定此列中的文本相对于单元格的对齐方式。

  • 最小宽度

    列的最小宽度(像素)。当小部件调整大小或用户拖动列时,TreeView小部件不会使列小于此选项指定的值。

  • 拉伸: True/False

    指定在调整小部件大小时是否应调整列的宽度。

  • 宽度:宽度

    列的宽度(像素)。

要配置树列,请使用column=“0”调用此列。

delete(*items)

删除所有指定的 项目 以及他们所有的后代。

不能删除根项。

detach(*items)

取消链接所有指定的 项目 从树上。

项目及其所有子代仍然存在,可以在树中的其他点重新插入,但不会显示。

不能分离根项。

exists(item)

返回 True 如果指定 item 存在于树中。

focus(item=None)

如果 item 指定,将焦点项设置为 item . 否则,返回当前焦点项,如果没有,则返回“”。

heading(column, option=None, **kw)

查询或修改指定的 .

如果 kw 如果未给定,则返回标题选项值的dict。如果 option 然后指定该值 option 返回。否则,将选项设置为相应的值。

有效的选项/值为:

  • 文本:文本

    要在列标题中显示的文本。

  • 图像:图像名称

    指定要在列标题右侧显示的图像。

  • 锚:锚

    指定标题文本应如何对齐。标准tk锚定值之一。

  • 命令:回调

    当按下标题标签时要调用的回调。

若要配置树列标题,请使用column=“0”调用此项。

identify(component, x, y)

返回指定的 成分 根据给出的点 xy ,如果没有,则为空字符串 成分 在那个位置。

identify_row(y)

返回位置处的项的项ID y .

identify_column(x)

返回位置处单元格的数据列标识符 x .

树列的ID 0。

identify_region(x, y)

返回其中之一:

区域

意思

标题

树形标题区域。

分离器

两列标题之间的空格。

树木区域。

细胞

一个数据单元。

可用性:tk 8.6。

identify_element(x, y)

返回位置处的元素 xy .

可用性:tk 8.6。

index(item)

返回的整数索引 item 在其父级的子级列表中。

insert(parent, index, iid=None, **kw)

创建新项并返回新创建项的项标识符。

起源 是父项的项ID,或创建新顶级项的空字符串。 index 是一个整数或值“end”,指定父级子级列表中插入新项的位置。如果 index 小于或等于零,则在开始处插入新节点;如果 index 大于或等于当前子级数,将在末尾插入。如果 iid 指定,用作项目标识符; iid 树中不能已经存在。否则,将生成新的唯一标识符。

Item Options 获取可用点的列表。

item(item, option=None, **kw)

查询或修改指定的 item .

如果没有提供任何选项,则返回带有该项的选项/值的dict。如果 option 然后返回该选项的值。否则,将选项设置为 kw .

move(item, parent, index)

移动 item 定位 index 在里面 起源 子项的列表。

将项目移动到其后代之一下是非法的。如果 index 小于或等于零, item 移到开头;如果大于或等于子级的数目,则移到结尾。如果 item 已分离,已重新连接。

next(item)

返回的标识符 item 的下一个兄弟姐妹,或“”if item 是其父级的最后一个子级。

parent(item)

返回的父级的ID item 或者'如果' item 位于层次结构的顶层。

prev(item)

返回的标识符 item 的上一个同级,或“”if item 是其父级的第一个子级。

reattach(item, parent, index)

的别名 Treeview.move() .

see(item)

确保 item 是可见的。

设置所有 item 的祖先打开选项 True ,并在必要时滚动小部件,以便 item 在树的可见部分内。

selection()

返回选定项的元组。

在 3.8 版更改: selection() 不再需要参数。要更改选择状态,请使用以下选择方法。

selection_set(*items)

项目 成为新选择。

在 3.6 版更改: 项目 可以作为单独的参数传递,而不仅仅是作为一个元组。

selection_add(*items)

添加 项目 到所选内容。

在 3.6 版更改: 项目 可以作为单独的参数传递,而不仅仅是作为一个元组。

selection_remove(*items)

去除 项目 从所选内容。

在 3.6 版更改: 项目 可以作为单独的参数传递,而不仅仅是作为一个元组。

selection_toggle(*items)

切换中每个项的选择状态 项目 .

在 3.6 版更改: 项目 可以作为单独的参数传递,而不仅仅是作为一个元组。

set(item, column=None, value=None)

使用一个参数,返回指定的列/值对的字典 item . 使用两个参数,返回指定的 . 使用三个参数,设置给定的 在给定的 item 到指定的 value .

tag_bind(tagname, sequence=None, callback=None)

为给定事件绑定回调 序列 给标签 标记名 . 当一个事件传递到一个项目时,将调用该项目的每个标记选项的回调。

tag_configure(tagname, option=None, **kw)

查询或修改指定的 标记名 .

如果 kw 未给定,返回选项设置的dict 标记名 .如果 option 如果指定了,则返回 option 对于指定的 标记名 . 否则,将选项设置为给定的 标记名 .

tag_has(tagname, item=None)

如果 item 指定,根据指定的 item 有给定的 标记名 . 否则,返回具有指定标记的所有项的列表。

可用性:tk 8.6

xview(*args)

查询或修改TreeView的水平位置。

yview(*args)

查询或修改TreeView的垂直位置。

TTK造型

每个小部件 ttk 指定了一种样式,该样式指定组成小部件的元素集及其排列方式,以及元素选项的动态和默认设置。默认情况下,样式名与小部件的类名相同,但它可能被小部件的样式选项覆盖。如果您不知道小部件的类名,请使用该方法 Misc.winfo_class() (someWidget.winfo_class())。

参见

Tcl'2004 conference presentation

本文档介绍主题引擎的工作原理

class tkinter.ttk.Style

此类用于操作样式数据库。

configure(style, query_opt=None, **kw)

在中查询或设置指定选项的默认值 风格 .

每个密钥 kw 是一个选项,每个值都是一个字符串,用于标识该选项的值。

例如,要将每个默认按钮更改为带有一些填充和不同背景颜色的平面按钮,请执行以下操作:

from tkinter import ttk
import tkinter

root = tkinter.Tk()

ttk.Style().configure("TButton", padding=6, relief="flat",
   background="#ccc")

btn = ttk.Button(text="Sample")
btn.pack()

root.mainloop()
map(style, query_opt=None, **kw)

在中查询或设置指定选项的动态值 风格 .

每个密钥 kw 是一个选项,每个值都应该是一个列表或一个元组(通常),其中包含按元组、列表或某些其他首选项分组的Statespec。Statespec是一个或多个状态的组合,然后是一个值。

一个例子可能使其更易于理解:

import tkinter
from tkinter import ttk

root = tkinter.Tk()

style = ttk.Style()
style.map("C.TButton",
    foreground=[('pressed', 'red'), ('active', 'blue')],
    background=[('pressed', '!disabled', 'black'), ('active', 'white')]
    )

colored_btn = ttk.Button(text="Test", style="C.TButton").pack()

root.mainloop()

请注意,如果将某个选项的(状态、值)序列的顺序更改为 [('active', 'blue'), ('pressed', 'red')] 例如,在前景选项中,当小部件处于活动或按下状态时,结果将是蓝色前景。

lookup(style, option, state=None, default=None)

返回为指定的值 option 在里面 风格 .

如果 state 是指定的,它应该是一个由一个或多个状态组成的序列。如果 default 参数已设置,如果找不到选项的规范,它将用作回退值。

检查按钮默认使用的字体:

from tkinter import ttk

print(ttk.Style().lookup("TButton", "font"))
layout(style, layoutspec=None)

为给定控件定义控件布局 风格 .如果 布局规格 如果省略,则返回给定样式的布局规范。

布局规格 如果指定,则应为列表或某些其他序列类型(不包括字符串),其中每个项应为元组,第一个项为布局名称,第二个项应具有中描述的格式。 Layouts .

要理解格式,请参见以下示例(它不打算做任何有用的事情)::

from tkinter import ttk
import tkinter

root = tkinter.Tk()

style = ttk.Style()
style.layout("TMenubutton", [
   ("Menubutton.background", None),
   ("Menubutton.button", {"children":
       [("Menubutton.focus", {"children":
           [("Menubutton.padding", {"children":
               [("Menubutton.label", {"side": "left", "expand": 1})]
           })]
       })]
   }),
])

mbtn = ttk.Menubutton(text='Text')
mbtn.pack()
root.mainloop()
element_create(elementname, etype, *args, **kw)

在给定的当前主题中创建一个新元素 埃特佩 它应该是“image”、“from”或“vsapi”。后者仅在用于Windows XP和Vista的tk 8.6a中可用,此处不作说明。

如果使用“图像”, args 应包含默认图像名称,后跟statespec/值对(这是imagespec),以及 kw 可能有以下选项:

  • 边框=填充

    padding是最多四个整数的列表,分别指定左边框、上边框、右边框和下边框。

  • 身高=身高

    指定元素的最小高度。如果小于零,则默认使用基础图像的高度。

  • 填充=填充

    指定元素的内部填充。如果未指定,则默认为border的值。

  • 粘性=规格

    指定如何将图像放置在最终地块中。spec包含零个或多个字符“n”、“s”、“w”或“e”。

  • 宽度=宽度

    指定元素的最小宽度。如果小于零,则将基础图像的宽度用作默认值。

如果“From”用作 埃特佩element_create() 将复制现有元素。 args 应包含将从中复制元素的ThemeName,也可以包含要从中复制的元素。如果未指定要从中复制的元素,则将使用空元素。 kw 被丢弃。

element_names()

返回当前主题中定义的元素列表。

element_options(elementname)

返回的列表 元素名称 的选择。

theme_create(themename, parent=None, settings=None)

创建新主题。

如果 主题名 已经存在。如果 起源 如果指定,则新主题将从父主题继承样式、元素和布局。如果 设置 它们的语法应该与 theme_settings() .

theme_settings(themename, settings)

暂时将当前主题设置为 主题名 ,应用指定的 设置 然后恢复上一个主题。

每个密钥 设置 是一个样式,每个值可以包含关键字“configure”、“map”、“layout”和“element create”,并且它们的格式应与方法指定的格式相同。 Style.configure()Style.map()Style.layout()Style.element_create() 分别。

例如,让我们稍微更改一下默认主题的组合框:

from tkinter import ttk
import tkinter

root = tkinter.Tk()

style = ttk.Style()
style.theme_settings("default", {
   "TCombobox": {
       "configure": {"padding": 5},
       "map": {
           "background": [("active", "green2"),
                          ("!disabled", "green4")],
           "fieldbackground": [("!disabled", "green3")],
           "foreground": [("focus", "OliveDrab1"),
                          ("!disabled", "OliveDrab2")]
       }
   }
})

combo = ttk.Combobox().pack()

root.mainloop()
theme_names()

返回所有已知主题的列表。

theme_use(themename=None)

如果 主题名 未给定,返回正在使用的主题。否则,将当前主题设置为 主题名 ,刷新所有小部件并发出<<ThemeChanged>>事件。

布局

布局可以只是 None ,如果它不接受任何选项,或者指定如何排列元素的选项dict。布局机制使用包几何管理器的简化版本:给定初始空腔,每个元素都分配一个包。有效选项/值为:

  • 侧面:哪边

    指定要放置元素的空腔的哪一侧;顶部、右侧、底部或左侧。如果忽略,元素将占据整个空腔。

  • 粘性:NSWE

    指定元素放置在其分配的包中的位置。

  • 单位:0或1

    如果设置为1,则会将元素及其所有子元素视为单个元素,以便 Widget.identify() 等。它用于像带夹点的滚动条拇指之类的东西。

  • 子项: [分析…]

    指定要放置在元素中的元素列表。每个元素都是一个元组(或其他序列类型),其中第一项是布局名称,另一项是 Layout .