tkinter.ttk — Tk 主题小部件 — Python 文档
tkinter.ttk — Tk 主题小部件
源代码: :source:`Lib/tkinter/ttk.py`
tkinter.ttk 模块提供对 Tk 8.5 中引入的 Tk 主题小部件集的访问。 如果 Python 尚未针对 Tk 8.5 进行编译,则在安装了 Tile 的情况下仍可以访问此模块。 前一种使用 Tk 8.5 的方法提供了额外的好处,包括 X11 下的抗锯齿字体渲染和窗口透明度(需要 X11 上的组合窗口管理器)。
tkinter.ttk 的基本思想是尽可能将实现小部件行为的代码与实现其外观的代码分开。
使用 Ttk
要开始使用 Ttk,请导入其模块:
from tkinter import ttk
要覆盖基本的 Tk 小部件,导入应遵循 Tk 导入:
from tkinter import *
from tkinter.ttk import *
该代码导致几个 tkinter.ttk 小部件(Button
、Checkbutton
、Entry
、Frame
、Label
、 LabelFrame
、Menubutton
、PanedWindow
、Radiobutton
、Scale
和 Scrollbar
)自动替换 Tk 小部件。
这具有使用新小部件的直接好处,它提供了更好的跨平台外观和感觉; 但是,替换小部件并不完全兼容。 主要区别在于 Ttk 小部件中不再存在小部件选项,例如“fg”、“bg”和其他与小部件样式相关的选项。 相反,使用 ttk.Style
类来改进样式效果。
Ttk 小工具
Ttk 带有 18 个小部件,其中 12 个已经存在于 tkinter 中:Button
、Checkbutton
、Entry
、Frame
、Label
、[ X126X]、Menubutton
、PanedWindow
、Radiobutton
、Scale
、Scrollbar
、 其他六个是新的:Combobox、Notebook、Progressbar、Separator
、Sizegrip
和Treeview ]。 它们都是 Widget 的子类。
使用 Ttk 小部件可以改善应用程序的外观和感觉。 如上所述,样式的编码方式存在差异。
代码:
l1 = tkinter.Label(text="Test", fg="black", bg="white")
l2 = tkinter.Label(text="Test", fg="black", bg="white")
代码:
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
小部件都接受以下选项:
选项 描述 班级 指定窗口类。 当查询选项数据库以获取窗口的其他选项、确定窗口的默认绑定标签以及选择小部件的默认布局和样式时,将使用该类。 此选项是只读的,只能在创建窗口时指定。 光标 指定要用于小部件的鼠标光标。 如果设置为空字符串(默认值),则为父小部件继承光标。 对焦 确定窗口在键盘遍历期间是否接受焦点。 返回 0、1 或空字符串。 如果返回 0,则表示在键盘遍历期间应完全跳过该窗口。 如果为 1,则表示只要窗口可见,就应该接收输入焦点。 空字符串意味着遍历脚本决定是否关注窗口。 风格 可用于指定自定义小部件样式。
可滚动小部件选项
由滚动条控制的小部件支持以下选项。
选项 描述 xscroll命令 用于与水平滚动条通信。
当widget 窗口中的视图发生变化时,widget 将根据scrollcommand 生成Tcl 命令。
通常这个选项由一些滚动条的方法
Scrollbar.set()
组成。 这将导致滚动条在窗口中的视图发生变化时更新。yscroll 命令 用于与垂直滚动条通信。 有关更多信息,请参见上文。
标签选项
标签、按钮和其他类似按钮的小部件支持以下选项。
选项 描述 文本 指定要在小部件内显示的文本字符串。 文本变量 指定一个名称,其值将用于代替文本选项资源。 强调 如果设置,则指定要在文本字符串中加下划线的字符的索引(从 0 开始)。 下划线字符用于助记符激活。 图像 指定要显示的图像。 这是一个包含 1 个或多个元素的列表。 第一个元素是默认图像名称。 列表的其余部分是由 Style.map() 定义的一系列 statespec/value 对,指定当小部件处于特定状态或状态组合时要使用的不同图像。 列表中的所有图像都应具有相同的大小。 化合物 在文本和图像选项都存在的情况下,指定如何相对于文本显示图像。 有效值为:
- 文本:仅显示文本
- 图像:仅显示图像
- 上、下、左、右:分别在文本的上方、下方、左侧或右侧显示图像。
- 无:默认值。 显示图像(如果存在),否则显示文本。
宽度 如果大于零,则指定为文本标签分配多少字符宽度的空间,如果小于零,则指定最小宽度。 如果为零或未指定,则使用文本标签的自然宽度。
兼容性选项
选项 描述 状态 可设置为“正常”或“禁用”以控制“禁用”状态位。 这是一个只写选项:设置它会更改小部件状态,但 Widget.state() 方法不影响此选项。
小部件状态
小部件状态是独立状态标志的位图。
旗帜 描述 积极的 鼠标光标在小部件上,按下鼠标按钮会导致一些动作发生 残疾 小部件在程序控制下被禁用 重点 小部件具有键盘焦点 按下 正在按下小部件 选中 “On”、“true”或“current”用于诸如 Checkbuttons 和 radiobuttons 之类的东西 背景 Windows 和 Mac 有一个“活动”或前景窗口的概念。 background 状态为背景窗口中的小部件设置,并为前景窗口中的小部件清除 只读 小部件不应允许用户修改 备用 特定于小部件的替代显示格式 无效的 小部件的值无效
状态规范是一系列状态名称,可选地以感叹号作为前缀,指示该位已关闭。
小工具
除了下面描述的方法,ttk.Widget
支持方法 tkinter.Widget.cget()
和 tkinter.Widget.configure()
。
- class tkinter.ttk.Widget
- identify(x, y)
返回位置 x y 处元素的名称,如果该点不位于任何元素内,则返回空字符串。
x 和 y 是相对于小部件的像素坐标。
- instate(statespec, callback=None, *args, **kw)
测试小部件的状态。 如果未指定回调,则在小部件状态匹配 statespec 时返回
True
,否则返回False
。 如果指定了回调,则在小部件状态匹配 statespec 时使用 args 调用它。
- state(statespec=None)
修改或查询小部件状态。 如果指定了 statespec,则根据它设置小部件状态并返回一个新的 statespec,指示更改了哪些标志。 如果未指定 statespec,则返回当前启用的状态标志。
statespec 通常是一个列表或一个元组。
组合框
ttk.Combobox
小部件将文本字段与值的弹出列表组合在一起。 这个小部件是 Entry
的子类。
除了继承自 Widget 的方法:Widget.cget()
、Widget.configure()
、Widget.identify()、Widget.instate()和 Widget.state(),以及以下继承自 Entry
:Entry.bbox()
、Entry.delete()
、Entry.icursor()
、[ X239X]、Entry.insert()
、Entry.selection()
、Entry.xview()
,还有一些其他的方法,在ttk.Combobox
中有描述。
选项
此小部件接受以下特定选项:
选项 描述 出口选择 布尔值。 如果设置,小部件选择将链接到窗口管理器选择(例如,可以通过调用 Misc.selection_get 返回)。 证明合法 指定文本在小部件内的对齐方式。 “左”、“中”或“右”之一。 高度 以行为单位指定弹出列表框的高度。 后命令 在显示值之前立即调用的脚本(可能使用 Misc.register 注册)。 它可以指定要显示的值。 状态 “正常”、“只读”或“禁用”之一。 在“只读”状态下,不能直接编辑该值,用户只能从下拉列表中选择值。 在“正常”状态下,文本字段是可直接编辑的。 在“禁用”状态下,无法进行交互。 文本变量 指定其值链接到小部件值的名称。 每当与该名称关联的值发生更改时,小部件值就会更新,反之亦然。 参见 tkinter.StringVar
。价值观 指定要在下拉列表框中显示的值列表。 宽度 指定一个整数值,指示所需的输入窗口宽度,以小部件字体的平均大小字符表示。
虚拟活动
组合框小部件生成一个 < > 当用户从值列表中选择一个元素时的虚拟事件。
ttk.Combobox
- class tkinter.ttk.Combobox
- current(newindex=None)
如果指定了 newindex,则将组合框值设置为元素位置 newindex。 否则,如果当前值不在值列表中,则返回当前值的索引或 -1。
- get()
返回组合框的当前值。
- set(value)
将组合框的值设置为 值 。
旋转箱
ttk.Spinbox
小部件是一个 ttk.Entry
增强的增量和减量箭头。 它可用于数字或字符串值列表。 这个小部件是 Entry
的子类。
除了继承自 Widget 的方法: Widget.cget()
, Widget.configure()
, Widget.identify(), Widget.instate()和 Widget.state(),以及以下继承自 Entry
:Entry.bbox()
、Entry.delete()
、Entry.icursor()
、[ X239X]、Entry.insert()
、Entry.xview()
,它还有一些其他方法,在ttk.Spinbox
中描述。
选项
此小部件接受以下特定选项:
选项 | 描述 |
---|---|
从 | 浮点值。 如果设置,这是递减按钮将递减的最小值。 用作参数时必须拼写为 from_ ,因为 from 是 Python 关键字。
|
到 | 浮点值。 如果设置,这是增量按钮将增加的最大值。 |
增量 | 浮点值。 指定增量/减量按钮更改值的量。 默认为 1.0。 |
价值观 | 字符串或浮点值的序列。 如果指定,递增/递减按钮将在此序列中循环显示项目,而不是递增或递减数字。 |
裹 | 布尔值。 如果True ,递增和递减按钮将从to 值循环到from 值或from 值循环到to 值, 分别。
|
格式 | 字符串值。 这指定了由递增/递减按钮设置的数字格式。 它必须采用“%W.Pf”形式,其中 W 是值的填充宽度,P 是精度,而 '%' 和 'f' 是文字。 |
命令 | Python 可调用。 每当按下递增或递减按钮时,将不带参数调用。 |
虚拟活动
旋转框小部件生成一个 < > 用户按下时的虚拟事件 , 和 < > 用户按下时的虚拟事件 .
ttk.spinbox
- class tkinter.ttk.Spinbox
- get()
返回旋转框的当前值。
- set(value)
将旋转框的值设置为 值 。
笔记本
Ttk Notebook 小部件管理一组窗口并一次显示一个。 每个子窗口都与一个选项卡相关联,用户可以选择该选项卡来更改当前显示的窗口。
选项
此小部件接受以下特定选项:
选项 描述 高度 如果存在且大于零,则指定所需的窗格区域高度(不包括内部填充或制表符)。 否则,将使用所有窗格的最大高度。 填充 指定要在笔记本外部周围添加的额外空间量。 填充是最多四个长度规格的列表左上右下。 如果指定的元素少于四个,则底部默认为顶部,右侧默认为左侧,顶部默认为左侧。 宽度 如果存在且大于零,则指定所需的窗格区域宽度(不包括内部填充)。 否则,将使用所有窗格的最大宽度。
选项卡选项
标签还有特定的选项:
选项 描述 状态 “正常”、“禁用”或“隐藏”。 如果“禁用”,则选项卡不可选择。 如果“隐藏”,则不显示选项卡。 黏 指定子窗口在窗格区域内的定位方式。 值是包含零个或多个字符“n”、“s”、“e”或“w”的字符串。 根据 grid()
几何管理器,每个字母都表示子窗口将粘住的一侧(北、南、东或西)。填充 指定要在笔记本和此窗格之间添加的额外空间量。 语法与此小部件使用的选项填充相同。 文本 指定要在选项卡中显示的文本。 图像 指定要在选项卡中显示的图像。 请参阅 Widget 中描述的选项图像。 化合物 在选项 text 和 image 都存在的情况下,指定如何相对于文本显示图像。 有关合法值,请参阅 标签选项 。 强调 指定要在文本字符串中加下划线的字符的索引(从 0 开始)。 如果调用 Notebook.enable_traversal(),则带下划线的字符用于助记符激活。
标签标识符
ttk.Notebook
的几种方法中存在的 tab_id 可以采用以下任何形式:
- 零和制表符数之间的整数
- 子窗口的名称
- “@x,y”形式的位置规范,用于标识选项卡
- 文字字符串“current”,标识当前选择的选项卡
- 文字字符串“end”,返回标签的数量(仅对 Notebook.index() 有效)
虚拟活动
这个小部件生成一个 < > 选择新选项卡后的虚拟事件。
ttk.笔记本
- class tkinter.ttk.Notebook
- add(child, **kw)
向笔记本添加一个新选项卡。
如果窗口当前由笔记本管理但隐藏,则将其恢复到以前的位置。
有关可用选项的列表,请参阅 选项卡选项 。
- forget(tab_id)
删除 tab_id 指定的选项卡,取消映射和取消管理关联的窗口。
- hide(tab_id)
隐藏由 tab_id 指定的选项卡。
该选项卡将不会显示,但关联的窗口仍由笔记本管理并记住其配置。 可以使用 add() 命令恢复隐藏的选项卡。
- identify(x, y)
返回位置 x、y 处的选项卡元素的名称,如果没有则返回空字符串。
- index(tab_id)
返回由 tab_id 指定的选项卡的数字索引,如果 tab_id 是字符串“end”,则返回选项卡的总数。
- insert(pos, child, **kw)
在指定位置插入窗格。
pos 是字符串“end”、整数索引或托管子项的名称。 如果 child 已经由 notebook 管理,则将其移动到指定位置。
有关可用选项的列表,请参阅 选项卡选项 。
- 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。 价值 进度条的当前值。 在“确定”模式下,这表示已完成的工作量。 在“不确定”模式下,它被解释为模 最大值 ; 即进度条在其值增加maximum时完成一个“循环”。 多变的 链接到选项值的名称。 如果指定,则进度条的值会在修改名称时自动设置为该名称的值。 阶段 只读选项。 每当此选项的值大于 0 并且在确定模式下小于最大值时,小部件就会定期增加该选项的值。 当前主题可以使用此选项来提供额外的动画效果。
ttk.进度条
- class tkinter.ttk.Progressbar
- start(interval=None)
开始自动增量模式:安排一个重复的计时器事件,该事件每 间隔 毫秒调用一次 Progressbar.step()。 如果省略,interval 默认为 50 毫秒。
- step(amount=None)
将进度条的值增加 amount。
amount 如果省略则默认为 1.0。
- stop()
停止自动增量模式:取消由 Progressbar.start() 为该进度条启动的任何重复计时器事件。
分隔器
ttk.Separator
小部件显示水平或垂直分隔栏。
除了继承自ttk.Widget
的方法外,它没有其他方法。
选项
此小部件接受以下特定选项:
选项 描述 东方 “水平”或“垂直”之一。 指定分隔符的方向。
握把
ttk.Sizegrip
小部件(也称为增长框)允许用户通过按住并拖动手柄来调整包含顶级窗口的大小。
除了继承自 ttk.Widget
的那些外,这个小部件既没有特定的选项也没有特定的方法。
特定于平台的注释
- 在 MacOS X 上,默认情况下,顶级窗口会自动包含一个内置的大小夹点。 添加
Sizegrip
是无害的,因为内置的手柄只会掩盖小部件。
错误
- 如果包含顶层的位置是相对于屏幕的右侧或底部指定的(例如 ....),
Sizegrip
小部件不会调整窗口大小。 - 此小部件仅支持“东南”调整大小。
树视图
ttk.Treeview
小部件显示项目的分层集合。 每个项目都有一个文本标签、一个可选图像和一个可选的数据值列表。 数据值显示在树标签之后的连续列中。
数据值的显示顺序可以通过设置小部件选项 displaycolumns
来控制。 树小部件还可以显示列标题。 可以通过小部件选项列中列出的数字或符号名称访问列。 请参阅 列标识符 。
每个项目都由一个唯一的名称标识。 如果调用者未提供项目 ID,小部件将生成项目 ID。 有一个特殊的根项,名为 {}
。 不显示根项目本身; 它的子项出现在层次结构的顶层。
每个项目还有一个标签列表,可用于将事件绑定与单个项目相关联并控制项目的外观。
根据 Scrollable Widget Options 中描述的选项和方法 Treeview.xview() 和 Treeview.yview(),Treeview 小部件支持水平和垂直滚动.
选项
此小部件接受以下特定选项:
选项 描述 列 列标识符列表,指定列数及其名称。 显示列 列标识符(符号或整数索引)列表,指定显示哪些数据列及其出现顺序,或字符串“#all”。 高度 指定应该可见的行数。 注意:请求的宽度由列宽的总和确定。 填充 指定小部件的内部填充。 填充是最多四个长度规格的列表。 选择模式 控制内置类绑定如何管理选择。 “扩展”、“浏览”或“无”之一。 如果设置为“扩展”(默认),则可以选择多个项目。 如果“浏览”,则一次只会选择一个项目。 如果为“无”,则不会更改选择。
请注意,应用程序代码和标签绑定可以按照自己的意愿设置选择,而不管此选项的值如何。
显示 包含零个或多个以下值的列表,指定要显示树的哪些元素。
- 树:在第 0 列中显示树标签。
- 标题:显示标题行。
默认为“树标题”,即显示所有元素。
注:列#0 总是指树列,即使没有指定show=”tree”。
项目选项
可以为插入和项目小部件命令中的项目指定以下项目选项。
选项 描述 文本 要为项目显示的文本标签。 图像 显示在标签左侧的 Tk 图像。 价值观 与项目关联的值列表。
每个项目应具有与小部件选项列相同数量的值。 如果值少于列数,则假定其余值为空。 如果值多于列,则忽略多余的值。
打开 True
/False
值指示是否应显示或隐藏项目的子项。标签 与此项目关联的标签列表。
标签选项
可以在标签上指定以下选项:
选项 描述 前景 指定文本前景色。 背景 指定单元格或项目的背景颜色。 字体 指定绘制文本时使用的字体。 图像 指定项目图像,以防项目的图像选项为空。
列标识符
列标识符采用以下任何一种形式:
- 列选项列表中的符号名称。
- 整数 n,指定第 n 个数据列。
- #n 形式的字符串,其中 n 是整数,指定第 n 个显示列。
笔记:
- 项目的选项值的显示顺序可能与它们的存储顺序不同。
- 列 #0 始终指的是树列,即使未指定 show=”tree”。
数据列编号是项目选项值列表的索引; 显示列号是树中显示值的列号。 树标签显示在#0 列中。 如果未设置选项 displaycolumns,则数据列 n 显示在列 #n+1 中。 同样,列#0 总是指树列。
虚拟活动
Treeview 小部件生成以下虚拟事件。
事件 描述 < > Generated whenever the selection changes. < > 在将焦点项目设置为 open=True 之前生成。 < > 在将焦点项目设置为 open=False 后生成。
Treeview.focus() 和 Treeview.selection() 方法可用于确定受影响的项目。
ttk.Treeview
- class tkinter.ttk.Treeview
- bbox(item, column=None)
以 (x, y, width, height) 形式返回指定 项 的边界框(相对于树视图小部件的窗口)。
如果指定了 column,则返回该单元格的边界框。 如果 项 不可见(即,如果它是关闭项的后代或滚动到屏幕外),则返回空字符串。
- get_children(item=None)
返回属于 item 的子项列表。
如果未指定 item,则返回根子项。
- set_children(item, *newchildren)
用 newchildren 替换 item 的孩子。
出现在 item 中但不在 newchildren 中的孩子从树上分离。 newchildren 中的任何项目都不能是 item 的祖先。 请注意,不指定 newchildren 会导致分离 item 的孩子。
- column(column, option=None, **kw)
查询或修改指定列的选项。
如果未给出 kw,则返回列选项值的字典。 如果指定了 option,则返回该 option 的值。 否则,将选项设置为相应的值。
有效的选项/值是:
- ID
返回列名。 这是一个只读选项。
- 锚点:标准 Tk 锚点值之一。
指定此列中的文本应如何相对于单元格对齐。
- 最小宽度:宽度
列的最小宽度(以像素为单位)。 当小部件调整大小或用户拖动列时,树视图小部件不会使列比此选项指定的小。
- 拉伸:
True
/False
指定在调整小部件大小时是否应调整列的宽度。
- 拉伸:
- 宽度:宽度
列的宽度(以像素为单位)。
要配置树列,请使用 column = “#0” 调用它
- delete(*items)
删除所有指定的 项 及其所有后代。
不能删除根项目。
- detach(*items)
从树中取消所有指定的 项目 的链接。
项目及其所有后代仍然存在,并且可以在树中的另一个点重新插入,但不会显示。
不能分离根项目。
- exists(item)
如果指定的 项 存在于树中,则返回
True
。
- focus(item=None)
如果指定了 item,则将焦点项目设置为 item。 否则,返回当前焦点项,如果没有,则返回 。
- heading(column, option=None, **kw)
查询或修改指定列的标题选项。
如果未给出 kw,则返回航向选项值的字典。 如果指定了 option,则返回该 option 的值。 否则,将选项设置为相应的值。
有效的选项/值是:
- 文字:文字
要在列标题中显示的文本。
- 图像:图像名称
指定要显示在列标题右侧的图像。
- 锚:锚
指定标题文本应如何对齐。 标准 Tk 锚值之一。
- 命令:回调
按下标题标签时调用的回调。
要配置树列标题,请使用 column =“#0”调用它。
- identify(component, x, y)
在 x 和 y 给定的点下返回指定的 component 的描述,如果没有这样的 component,则返回空字符串在那个位置。
- identify_row(y)
返回位置 y 处项目的项目 ID。
- identify_column(x)
返回位置 x 处单元格的数据列标识符。
树列具有 ID #0。
- identify_region(x, y)
返回以下之一:
地区
意义
标题
树标题区。
分隔器
两列标题之间的空间。
树
树区。
细胞
一个数据单元格。
可用性:TK 8.6。
- identify_element(x, y)
返回位置 x, y 处的元素。
可用性:TK 8.6。
- index(item)
返回 item 在其父级子项列表中的整数索引。
- insert(parent, index, iid=None, **kw)
创建一个新项目并返回新创建项目的项目标识符。
parent 是父项的项 ID,或者是创建新顶级项的空字符串。 index 是一个整数,或值“end”,指定在父子项列表中插入新项的位置。 如果index小于或等于0,则在开头插入新节点; 如果 index 大于或等于当前子节点数,则插入到末尾。 如果指定了 iid,则用作项目标识符; iid 不能已经存在于树中。 否则,将生成新的唯一标识符。
有关可用点的列表,请参阅 项目选项 。
- item(item, option=None, **kw)
查询或修改指定项的选项。
如果没有给出选项,则返回带有该项目的选项/值的字典。 如果指定了 option,则返回该选项的值。 否则,将选项设置为 kw 给出的相应值。
- move(item, parent, index)
将 item 移动到 parent 的孩子列表中的 index 位置。
将项目移动到其后代之一下是非法的。 如果index小于等于0,则item移到开头; 如果大于或等于孩子的数量,则将其移至末尾。 如果 item 被分离,它会被重新附加。
- next(item)
返回 item 的下一个同级的标识符,如果 item 是其父级的最后一个子级,则返回 。
- parent(item)
返回 item 的父级 ID,如果 item 位于层次结构的顶层,则返回 。
- prev(item)
返回 item 的前一个兄弟的标识符,如果 item 是其父项的第一个子项,则返回 。
- reattach(item, parent, index)
Treeview.move() 的别名。
- see(item)
确保 项 可见。
将所有 item 的祖先打开选项设置为
True
,并在必要时滚动小部件,以便 item 位于树的可见部分内。
- selection()
返回所选项目的元组。
3.8 版更改:
selection()
不再接受参数。 要更改选择状态,请使用以下选择方法。
- selection_set(*items)
items 成为新的选择。
在 3.6 版更改: items 可以作为单独的参数传递,而不仅仅是作为单个元组。
- selection_add(*items)
将 items 添加到选择中。
在 3.6 版更改: items 可以作为单独的参数传递,而不仅仅是作为单个元组。
- selection_remove(*items)
从选择中删除 项 。
在 3.6 版更改: items 可以作为单独的参数传递,而不仅仅是作为单个元组。
- selection_toggle(*items)
在 items 中切换每个项目的选择状态。
在 3.6 版更改: items 可以作为单独的参数传递,而不仅仅是作为单个元组。
- set(item, column=None, value=None)
使用一个参数,返回指定 项 的列/值对字典。 使用两个参数,返回指定 列 的当前值。 使用三个参数,将给定 item 中给定 column 的值设置为指定的 value。
- tag_bind(tagname, sequence=None, callback=None)
将给定事件 sequence 的回调绑定到标签 tagname。 当一个事件被传递到一个项目时,每个项目的标签选项的回调都会被调用。
- tag_configure(tagname, option=None, **kw)
查询或修改指定 标记名 的选项。
如果未给出 kw,则返回 tagname 的选项设置的字典。 如果指定了 option,则为指定的 tagname 返回该 option 的值。 否则,将选项设置为给定 标记名 的相应值。
- tag_has(tagname, item=None)
如果指定了 item,则返回 1 或 0,具体取决于指定的 item 是否具有给定的 tagname。 否则,返回具有指定标签的所有项目的列表。
可用性:TK 8.6
- xview(*args)
查询或修改树状视图的水平位置。
- yview(*args)
查询或修改树状视图的垂直位置。
Ttk 造型
ttk
中的每个小部件都分配了一个样式,该样式指定了组成小部件的元素集及其排列方式,以及元素选项的动态和默认设置。 默认情况下,样式名称与小部件的类名称相同,但它可能会被小部件的样式选项覆盖。 如果您不知道小部件的类名,请使用方法 Misc.winfo_class()
(somewidget.winfo_class())。
- class tkinter.ttk.Style
此类用于操作样式数据库。
- configure(style, query_opt=None, **kw)
在style中查询或设置指定选项的默认值。
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)
查询或设置 style 中指定选项的动态值。
kw 中的每个键都是一个选项,每个值应该是一个列表或元组(通常),其中包含按元组、列表或其他一些偏好分组的状态规范。 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)
返回为 style 中的 option 指定的值。
如果指定了 state,它应该是一个或多个状态的序列。 如果设置了 default 参数,则在找不到选项规范的情况下,它将用作回退值。
要检查 Button 默认使用的字体:
from tkinter import ttk print(ttk.Style().lookup("TButton", "font"))
- layout(style, layoutspec=None)
为给定的 style 定义小部件布局。 如果省略 layoutspec,则返回给定样式的布局规范。
layoutspec,如果指定的话,应该是一个列表或其他一些序列类型(不包括字符串),其中每一项应该是一个元组,第一项是布局名称,第二项应该是格式在 布局 中描述。
要了解格式,请参阅以下示例(它不打算做任何有用的事情):
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)
在给定的 etype 的当前主题中创建一个新元素,它应该是“image”、“from”或“vsapi”。 后者仅在适用于 Windows XP 和 Vista 的 Tk 8.6a 中可用,此处不再描述。
如果使用“image”,args 应包含默认图像名称,后跟 statespec/value 对(这是 imagespec),并且 kw 可能有以下选项:
- 边框=填充
padding 是一个最多包含四个整数的列表,分别指定左、上、右和下边框。
- 高度=高度
指定元素的最小高度。 如果小于零,则使用基本图像的高度作为默认值。
- 填充=填充
指定元素的内部填充。 如果未指定,则默认为边框值。
- 粘性=规格
指定图像在最终地块中的放置方式。 spec 包含零个或多个字符“n”、“s”、“w”或“e”。
- 宽度=宽度
指定元素的最小宽度。 如果小于零,则使用基本图像的宽度作为默认值。
如果使用“from”作为 etype 的值,element_create() 将克隆现有元素。 args 应该包含一个主题名,从中克隆元素,以及可选的元素来克隆。 如果未指定要从中克隆的此元素,则将使用空元素。 kw 被丢弃。
- element_names()
返回当前主题中定义的元素列表。
- element_options(elementname)
返回 elementname 的选项列表。
- theme_create(themename, parent=None, settings=None)
创建一个新主题。
如果 themename 已经存在,则会出错。 如果指定了 parent,则新主题将从父主题继承样式、元素和布局。 如果存在 settings,它们应该具有用于 theme_settings() 的相同语法。
- theme_settings(themename, settings)
暂时设置当前主题为themename,应用指定的settings,然后恢复之前的主题。
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)
如果未给出 themename,则返回正在使用的主题。 否则,将当前主题设置为主题名称 , 刷新所有小部件并发出 < > 事件。
布局
布局可以只是 None
,如果它没有选项,或者指定如何排列元素的选项字典。 布局机制使用包装几何管理器的简化版本:给定一个初始空腔,每个元素分配一个包裹。 有效的选项/值是:
- *; 一边:哪一边
- 指定将元件放置在型腔的哪一侧; 顶部、右侧、底部或左侧之一。 如果省略,该元素将占据整个空腔。
- *; 粘性: nswe
- 指定元素在其分配的地块内的放置位置。
- *; 单位:0或1
- 如果设置为 1,则为了 Widget.identify() 等人的目的,将元素及其所有后代视为单个元素。 它用于诸如带把手的滚动条拇指之类的东西。
- *; 孩子们:[子布局……]
- 指定要放置在元素内的元素列表。 每个元素都是一个元组(或其他序列类型),其中第一项是布局名称,另一个是 Layout。