python / 3.7.2rc1 / all / library-tkinter.ttk.html

tkinter.ttk — Tk 主题小部件

源代码: Lib/tkinter/ttk.py


tkinter.ttk模块提供对 Tk 8.5 中引入的 Tk 主题小部件集的访问。如果尚未针对 Tk 8.5 编译 Python,则即使已安装* Tile *,仍可以访问此模块。使用 Tk 8.5 的前一种方法提供了其他好处,包括在 X11 下进行抗锯齿字体渲染和窗口透明(需要在 X11 上使用合成窗口 Management 器)。

tkinter.ttk的基本思想是将实现小部件行为的代码与实现其外观的代码尽可能地分开。

See also

Using Ttk

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

from tkinter import ttk

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

from tkinter import *
from tkinter.ttk import *

该代码使多个tkinter.ttk小部件(ButtonCheckbuttonEntryFrameLabelLabelFrameMenubuttonPanedWindowRadiobuttonScaleScrollbar)自动替换 Tk 小部件。

使用新的窗口小部件的直接好处是可以在各个平台上提供更好的外观和感觉。但是,替换小部件并不完全兼容。主要区别在于,Ttk 小部件中不再存在诸如“ fg”,“ bg”之类的小部件选项以及其他与小部件样式相关的选项。而是使用ttk.Style类来改善样式效果。

See also

Ttk Widgets

Ttk 带有 18 个小部件,其中 12 个已经存在于 tkinter 中:ButtonCheckbuttonEntryFrameLabelLabelFrameMenubuttonPanedWindowRadiobuttonScaleScrollbarSpinbox。其他六个是新的:ComboboxNotebookProgressbarSeparatorSizegripTreeview。它们都是Widget的子类。

使用 Ttk 小部件可为应用程序提供更好的外观。如上所述,样式的 encodings 有所不同。

Tk code:

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

Ttk code:

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类文档。

Widget

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

Standard Options

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

Note

Option Description
class 指定窗口类。在选项数据库中查询窗口的其他选项,确定窗口的默认绑定标签以及选择窗口小部件的默认布局和样式时,使用该类。此选项是只读的,只能在创建窗口时指定。
cursor 指定用于窗口小部件的鼠标光标。如果设置为空字符串(默认值),则为父窗口小部件继承光标。
takefocus 确定在键盘遍历期间窗口是否接受焦点。 0、1 或返回空字符串。如果返回 0,则表示在遍历键盘时应完全跳过该窗口。如果为 1,则意味着只要窗口可见,窗口就应该获得 Importing 焦点。空字符串表示遍历脚本将决定是否集中在窗口上。
style 可用于指定自定义窗口小部件样式。

可滚动小部件选项

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

Note

Option Description
xscrollcommand <_ 68>当窗口小部件窗口中的视图更改时,窗口小部件将基于滚动命令生成 Tcl 命令。<_ 69>通常,此选项由某些滚动条的方法Scrollbar.set()组成。每当窗口中的视图更改时,这将导致滚动条被更新。
yscrollcommand 用于与垂直滚动条进行通信。有关更多信息,请参见上文。

Label Options

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

Note

Option Description
text 指定要在小部件内显示的文本字符串。
textvariable 指定一个名称,该名称的值将代替文本选项资源。
underline 如果设置,则指定要在文本字符串中加下划线的字符的索引(从 0 开始)。下划线字符用于助记符激活。
image 指定要显示的图像。这是 1 个或多个元素的列表。第一个元素是默认图像名称。列表的其余部分,如果是由Style.map()定义的一系列状态规范/值对,则指定在小部件处于特定状态或状态组合时要使用的不同图像。列表中的所有图像应具有相同的尺寸。
compound 指定在同时显示文本和图像选项的情况下如何显示相对于文本的图像。有效值包括:<_ 74>文本:仅显示文本<_ 75>图像:仅显示图像<_ 76>顶部,底部,左侧,右侧:分别在文本上方,下方,左侧或右侧显示图像<_ 77>无:默认值。显示图像(如果存在),否则显示文本。
width 如果大于零,则指定为文本标签分配多少空间(以字符宽度为单位);如果小于零,则指定最小宽度。如果为零或未指定,则使用文本标签的自然宽度。

Compatibility Options

Note

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

Widget States

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

Note

Flag Description
active 鼠标光标在小部件上,按下鼠标按钮将引起一些动作
disabled 小部件在程序控制下被禁用
focus 小部件具有键盘焦点
pressed 小部件被按下
selected “开”,“真”或“当前”,例如“检查按钮”和“单选按钮”
background Windows 和 Mac 具有“活动”或前景窗口的概念。在后台窗口中为窗口小部件设置了* background *状态,并在前台窗口中将其清除了状态
readonly 小部件不应允许用户修改
alternate 特定于小部件的备用显示格式
invalid 窗口小部件的值无效

状态规范是状态名称的序列,可以选择在其前面加上表示该位为 OFF 的感叹号。

ttk.Widget

除了以下描述的方法外,ttk.Widget还支持方法tkinter.Widget.cget()tkinter.Widget.configure()

  • 类别 tkinter.ttk. Widget
      • identify(* x y *)
      • 返回位置* x * * y *的元素名称,如果该点不在任何元素内,则返回空字符串。
  • x y *是相对于小部件的像素坐标。
  • instate(* statespec callback = None *, *args * kw *)

    • 测试小部件的状态。如果未指定回调,则如果小部件状态与* statespec 匹配,则返回True,否则返回False。如果指定了 callback,那么如果小部件状态匹配 statespec *,则使用 args 进行调用。
  • state(* statespec = None *)

    • 修改或查询窗口小部件状态。如果指定了* statespec ,则根据它设置窗口小部件状态,并返回一个新的 statespec 来指示更改了哪些标志。如果未指定 statespec *,则返回当前启用的状态标志。
  • statespec *通常是列表或 Tuples。

Combobox

ttk.Combobox小部件将文本字段与值的下拉列表结合在一起。该小部件是Entry的子类。

除了从Widget继承的方法:Widget.cget()Widget.configure()Widget.identify()Widget.instate()Widget.state(),以下是从Entry继承的方法:Entry.bbox()Entry.delete()Entry.icursor()Entry.index()Entry.insert()Entry.selection()Entry.xview(),它还有一些其他方法,在ttk.Combobox中描述。

Options

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

Note

Option Description
exportselection 布尔值。如果设置,则将小部件选择链接到“窗口 Management 器”选择(例如,可以pass调用 Misc.selection_get 返回)。
justify 指定文本在小部件内的对齐方式。 “左”,“中心”或“右”之一。
height 指定弹出式列表框的高度,以行为单位。
postcommand 在显示值之前立即调用的脚本(可能已在 Misc.register 中注册)。它可以指定要显示的值。
state “正常”,“只读”或“禁用”之一。在“只读”状态下,可能无法直接编辑该值,并且用户只能从下拉列表中选择值。在“正常”状态下,文本字段可直接编辑。在“禁用”状态下,无法进行任何交互。
textvariable 指定一个名称,该名称的值链接到窗口小部件值。每当与该名称关联的值更改时,小部件值都会更新,反之亦然。参见tkinter.StringVar
values 指定要显示在下拉列表框中的值列表。
width 指定一个整数值,以小部件字体的平均大小字符表示 Importing 窗口的所需宽度。

Virtual events

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

ttk.Combobox

  • 类别 tkinter.ttk. Combobox

      • current(* newindex = None *)
      • 如果指定了* newindex ,则将组合框值设置为元素位置 newindex *。否则,返回当前值的索引;如果当前值不在值列表中,则返回-1.
  • get ( )

    • 返回组合框的当前值。
  • set(* value *)

    • 将组合框的值设置为* value *。

Spinbox

ttk.Spinbox小部件是ttk.Entry,带有递增和递减箭头。它可以用于数字或字符串值列表。该小部件是Entry的子类。

除了从Widget继承的方法:Widget.cget()Widget.configure()Widget.identify()Widget.instate()Widget.state(),以下是从Entry继承的方法:Entry.bbox()Entry.delete()Entry.icursor()Entry.index()Entry.insert()Entry.xview(),它还有一些其他方法,在ttk.Spinbox中描述。

Options

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

Note

Option Description
from 浮点值。如果设置,这是减量按钮将减少的最小值。由于from是 Python 关键字,因此用作参数时必须拼写为from_
to 浮点值。如果设置,这是递增按钮将递增到的最大值。
increment 浮点值。指定增量/减量按钮更改值的量。默认为 1.0.
values 字符串或浮点值的序列。如果指定,则递增/递减按钮将按此 Sequences 循环显示项目,而不是递增或递减数字。
wrap 布尔值。如果为True,则递增和递减按钮将分别从to值循环到from值,或从from值循环到to值。
format 字符串值。这指定了由增量/减量按钮设置的数字格式。它的格式必须为“%W.Pf”,其中 W 是值的填充宽度,P 是精度,而'%'和'f'是 Literals。
command Python 可调用。每当按下增量或减量按钮时,将不带任何参数调用。

Virtual events

当用户按下时,spinbox 小部件会生成一个 <> 虚拟事件,而当用户按下时,它将生成一个 <> 虚拟事件。

ttk.Spinbox

  • 类别 tkinter.ttk. Spinbox

      • get ( )
      • 返回微调框的当前值。
  • set(* value *)

    • 将旋转框的值设置为* value *。

Notebook

Ttk Notebook 小部件 Management 一组窗口并一次显示一个窗口。每个子窗口都与一个选项卡相关联,用户可以选择一个选项卡来更改当前显示的窗口。

Options

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

Note

Option Description
height 如果存在且大于零,则指定窗格区域的期望高度(不包括内部填充或制表符)。否则,将使用所有窗格的最大高度。
padding 指定要在笔记本计算机外部添加的额外空间量。填充是从左上方到右下方最多四个长度规范的列表。如果指定的元素少于四个,则 bottom 默认为 top,right 默认为 left,top 默认为 left。
width 如果存在且大于零,请指定窗格区域的所需宽度(不包括内部填充)。否则,将使用所有窗格的最大宽度。

Tab Options

选项卡也有特定的选项:

Note

Option Description
state “正常”,“禁用”或“隐藏”。如果“禁用”,则该选项卡不可选择。如果为“隐藏”,则不显示该选项卡。
sticky 指定子窗口在窗格区域内的放置方式。值是一个包含零个或多个字符“ n”,“ s”,“ e”或“ w”的字符串。根据grid()几何图形 Management 器,每个字母都表示子窗口将粘贴的一侧(北,南,东或西)。
padding 指定要在笔记本和此窗格之间添加的额外空间量。语法与此小部件使用的选项填充相同。
text 指定要在选项卡中显示的文本。
image 指定要在选项卡中显示的图像。请参阅Widget中描述的选项图像。
compound 指定在同时显示选项文本和图像的情况下如何显示相对于文本的图像。合法值请参见Label Options
underline 指定要在文本字符串中加下划线的字符的索引(从 0 开始)。如果调用了Notebook.enable_traversal(),则带下划线的字符用于助记符激活。

Tab Identifiers

ttk.Notebook的几种方法中存在的 tab_id 可以采用以下任何形式:

  • 零到制表符数目之间的整数

  • 子窗口的名称

  • 格式为“ @ x,y”的位置说明,用于标识制表符

  • Literals 字符串“当前”,标识当前选择的选项卡

  • Literals 字符串“ end”,它返回制表符的数量(仅对Notebook.index()有效)

Virtual Events

选择新选项卡后,此窗口小部件将生成 <> 虚拟事件。

ttk.Notebook

  • 类别 tkinter.ttk. Notebook
      • add(* child ** kw *)
      • 在笔记本中添加新标签。

如果窗口当前由笔记本计算机 Management 但被隐藏,则它将恢复到其先前位置。

有关可用选项的列表,请参见Tab Options

  • forget(* tab_id *)

    • 删除由* tab_id *指定的选项卡,取消 Map 和取消 Management 关联的窗口。
  • hide(* tab_id *)

    • 隐藏* tab_id *指定的标签。

该选项卡将不会显示,但关联的窗口仍由笔记本计算机 Management 并记住其配置。可以使用add()命令恢复隐藏的选项卡。

  • identify(* x y *)

    • 返回位于* x y *位置的 tab 元素的名称,如果没有则返回空字符串。
  • index(* tab_id *)

    • 返回由* tab_id 指定的选项卡的数字索引,如果 tab_id *是字符串“ end”,则返回选项卡的总数。
  • insert(* pos child ** kw *)

    • 在指定位置插入窗格。
  • pos 是字符串“ end”,整数索引或托管子项的名称。如果笔记本已经 Management child *,请将其移至指定位置。

有关可用选项的列表,请参见Tab Options

  • select(* tab_id = None *)
    • 选择指定的* tab_id *。

将显示关联的子窗口,并且未 Map 先前选择的窗口(如果不同)。如果Ellipsis* tab_id *,则返回当前所选窗格的窗口小部件名称。

  • tab(* tab_id option = None ** kw *)
    • 查询或修改特定* tab_id *的选项。

如果未提供* kw ,则返回制表符选项值的字典。如果指定了 option ,则返回该 option *的值。否则,将选项设置为相应的值。

  • tabs ( )

    • 返回笔记本 Management 的窗口列表。
  • enable_traversal ( )

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

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

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

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

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

可以启用单个顶层中的多个笔记本进行遍历,包括嵌套的笔记本。但是,笔记本遍历仅在所有窗格都将其笔记本作为主窗格的情况下才能正常运行。

Progressbar

ttk.Progressbar小部件显示长时间运行的状态。它可以在两种模式下运行:1)确定模式,显示相对于要完成的工作总量的完成数量; 2)不定模式,提供动画显示,以使用户知道工作进度。

Options

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

Note

Option Description
orient “水平”或“垂直”之一。指定进度条的方向。
length 指定进度条长轴的长度(水平时为宽度,垂直时为高度)。
mode “确定”或“不确定”之一。
maximum 一个数字,指定最大值。默认为 100.
value 进度栏的当前值。在“确定”模式下,这表示完成的工作量。在“不确定”模式下,它被解释为模最大;也就是说,进度条的值增加* maximum *时,它完成一个“周期”。
variable 与选项值链接的名称。如果指定了该名称,则进度栏的值将在修改后自动设置为该名称的值。
phase 只读选项。每当其值大于 0 且在确定模式下小于最大值时,小部件会定期增加此选项的值。当前主题可以使用此选项来提供其他动画效果。

ttk.Progressbar

  • 类别 tkinter.ttk. Progressbar

      • start(* interval = None *)
      • 开始自动递增模式:安排一个定期计时器事件,每隔间隔毫秒调用一次Progressbar.step()。如果Ellipsis,则* interval *默认为 50 毫秒。
  • step(* amount = None *)

    • 将进度条的值增加* amount *。
  • amount *默认为 1.0(如果Ellipsis)。
  • stop ( )
    • 停止自动递增模式:取消由Progressbar.start()对此进度条发起的任何重复计时器事件。

Separator

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

除了从ttk.Widget继承的方法外,它没有其他方法。

Options

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

Note

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

Sizegrip

ttk.Sizegrip小部件(也称为“增长框”)允许用户pass按下和拖动手柄来调整包含的顶层窗口的大小。

除了从ttk.Widget继承的控件外,此窗口小部件既没有特定的选项也没有特定的方法。

Platform-specific notes

  • 在 MacOS X 上,默认情况下,顶层窗口会自动包含内置的尺寸夹点。添加Sizegrip是没有害处的,因为内置的夹点只会遮盖小部件。

Bugs

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

  • 此小部件仅支持“东南”大小调整。

Treeview

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

可以pass设置小部件选项displaycolumns来控制数据值的显示 Sequences。树小部件还可以显示列标题。可以pass窗口小部件选项列中列出的数字或符号名来访问列。参见Column Identifiers

每个项目均由唯一名称标识。如果调用者未提供项目 ID,则小部件将生成项目 ID。有一个专有的根项,名为{}。根项目本身不显示;它的子级出现在层次结构的顶层。

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

根据可滚动小部件选项中描述的选项以及方法Treeview.xview()Treeview.yview(),Treeview 小部件支持水平和垂直滚动。

Options

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

Note

Option Description
columns 列标识符的列表,用于指定列数及其名称。
displaycolumns 列标识符(符号或整数索引)的列表,用于指定显示哪些数据列及其出现的 Sequences,或字符串“ #all”。
height 指定应该可见的行数。注意:请求的宽度由列宽度的总和确定。
padding 指定窗口小部件的内部填充。填充是最多四个长度规范的列表。
selectmode 控制内置类绑定如何 Management 选择。 “扩展”,“浏览”或“无”之一。如果设置为“扩展”(默认),则可以选择多个项目。如果为“浏览”,则一次将仅选择一个项目。如果为“ none”,则将不会更改选择。<_ 213>请注意,无论此选项的值如何,应用程序代码和标签绑定均可根据需要设置选择。
show 包含零个或多个以下值的列表,指定要显示树的哪些元素。<_ 214>树:在列#0 中显示树标签。<_ 215>标题:显示标题行。<_ 216>默认值是“树标题”,即显示所有元素。<_ 217> 注意 :即使未指定 show =“ tree”,列#0 始终引用树列。

Item Options

可以在插入和项目小部件命令中为项目指定以下项目选项。

Note

Option Description
text 要显示的文本标签。
image Tk 图像,显示在标签的左侧。
values 与该项目关联的值列表。<_ 219>每个项目应与小部件选项列具有相同数量的值。如果值少于列,则剩余的值将被认为是空的。如果值多于列,则多余的值将被忽略。
open True/False值,指示应显示还是隐藏该项目的子项。
tags 与此项目关联的标签列表。

Tag Options

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

Note

Option Description
foreground 指定文本前景色。
background 指定单元格或项目的背景色。
font 指定在绘制文本时使用的字体。
image 如果项目的图像选项为空,则指定项目图像。

Column Identifiers

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

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

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

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

Notes:

  • 项目的选项值可能以与存储 Sequences 不同的 Sequences 显示。

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

数据列号是项的选项值列表的索引;显示列号是显示值的树中的列号。树标签显示在#0 列中。如果未设置选项 displaycolumns,那么数据列 n 将显示在列#n 1 中。同样, 列#0 始终引用树列

Virtual Events

Treeview 小部件将生成以下虚拟事件。

Note

Event Description
<<TreeviewSelect>> 每当选择更改时生成。
<<TreeviewOpen>> 在将焦点项设置为 open = True 之前生成。
<<TreeviewClose>> 将焦点项设置为 open = False 后立即生成。

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

ttk.Treeview

  • 类别 tkinter.ttk. Treeview
      • bbox(* item column = None *)
      • 以(x,y,宽度,高度)形式返回指定* item *的边界框(相对于 treeview 小部件的窗口)。

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

  • get_children(* item = None *)
    • 返回属于* item *的子级列表。

如果未指定* item *,则返回 root 子代。

  • set_children(* item * newchildren *)
    • 用* newchildren 替换 item *的孩子。
  • item 中存在的子代与 newchildren *中不存在的子代与树分离。 * newchildren 中的任何项目都不能是 item 的祖先。请注意,不指定 newchildren 会导致 item *的孩子分离。
  • column((* column option = None ** kw *)
    • 查询或修改指定* column *的选项。

如果未指定* kw ,则返回列选项值的字典。如果指定了 option ,则返回该 option *的值。否则,将选项设置为相应的值。

有效的选项/值是:

    • id

      • 返回列名。这是一个只读选项。
    • 锚:标准 Tk 锚值之一。

      • 指定此列中的文本应相对于单元格对齐的方式。
    • minwidth: width

      • 列的最小宽度(以像素为单位)。当调整窗口小部件的大小或用户拖动列时,treeview 窗口小部件不会使列的大小小于此选项指定的大小。
    • 伸展:True/False

      • 指定在调整窗口小部件大小时是否应调整列的宽度。
    • width: width

      • 列的宽度(以像素为单位)。

要配置树列,请使用 column =“#0”进行调用

  • delete(*个项目)
    • 删除所有指定的* item *及其所有后代。

根项目可能不会被删除。

  • detach(*个项目)
    • 从树中取消所有指定的项目的链接。

这些项目及其所有后代仍然存在,可以在树的另一点重新插入,但不会显示。

根项目可能无法分离。

  • exists(项目)

    • 如果树中存在指定的* item *,则返回True
  • focus(* item = None *)

    • 如果指定了* item ,则将焦点项设置为 item *。否则,返回当前的焦点项目,如果没有,则返回。
  • heading((* column option = None ** kw *)

    • 查询或修改指定* column *的标题选项。

如果未提供* kw ,则返回标题选项值的字典。如果指定了 option ,则返回该 option *的值。否则,将选项设置为相应的值。

有效的选项/值是:

    • text: text

      • 要显示在列标题中的文本。
    • image: imageName

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

      • 指定标题文本应如何对齐。标准 Tk 锚值之一。
    • command: callback

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

要配置树的列标题,请使用 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 *)
    • 返回以下之一:
region meaning
heading 树标题区域。
separator 两列标题之间的空格。
tree 树区。
cell 数据单元。

可用性:Tk 8.6.

  • identify_element(* x y *)
    • 返回位置* x y *的元素。

可用性:Tk 8.6.

  • index(项目)

    • 返回其父项的子项列表中* item *的整数索引。
  • insert(* parent index iid = None ** kw *)

    • 创建一个新项目并返回新创建项目的项目标识符。
  • parent *是父项目的项目 ID,或者是用于创建新顶级项目的空字符串。 * index 是一个整数或值“ end”,指定在父级子级列表中插入新项的位置。如果 index 小于或等于零,则在新节点的开头插入新节点;如果 index 大于或等于当前子代数,则将其插入到末尾。如果指定了 iid *,它将用作项目标识符; * iid *必须不存在于树中。否则,将生成一个新的唯一标识符。

有关可用点的列表,请参见Item Options

  • item(* item option = None ** kw *)
    • 查询或修改指定* item *的选项。

如果没有给出选项,则返回带有该项目的选项/值的字典。如果指定了* option ,则返回该选项的值。否则,将选项设置为 kw *给定的相应值。

  • move((* item parent index *)
    • 将* item 移到 parent 的子级列表中的 index *位置。

将物品移到其后代之一下是非法的。如果* index 小于或等于零,则 item 移到开头;如果大于或等于子代数,则将其移动到末尾。如果 item *已分离,则重新附加。

  • next(项目)

    • 返回* item 的下一个兄弟的标识符,如果 item *是其父项的最后一个子代,则返回”。
  • parent(项目)

    • 返回* item 的父级的 ID,如果 item *在层次结构的顶层,则返回''。
  • prev(项目)

    • 返回* item 的前一个兄弟的标识符,如果 item *是其父项的第一个子代,则返回”。
  • reattach((* item parent index *)

  • see(项目)

    • 确保项目可见。

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

  • selection ( )
    • 返回选定项的 Tuples。

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

  • selection_set(*个项目)
    • 项目成为新选择。

在版本 3.6 中更改:* items *可以作为单独的参数传递,而不仅仅是单个 Tuples。

  • selection_add(*个项目)
    • 项目添加到选择中。

在版本 3.6 中更改:* items *可以作为单独的参数传递,而不仅仅是单个 Tuples。

  • selection_remove(*个项目)
    • 从选择中删除项目

在版本 3.6 中更改:* items *可以作为单独的参数传递,而不仅仅是单个 Tuples。

  • selection_toggle(*个项目)
    • 在* items *中切换每个项目的选择状态。

在版本 3.6 中更改:* items *可以作为单独的参数传递,而不仅仅是单个 Tuples。

  • set((* item column = None value = None *)

    • 使用一个参数,返回指定* item 的列/值对的字典。有两个参数,返回指定 column 的当前值。使用三个参数,将给定 item 中的给定 column 的值设置为指定的 value *。
  • tag_bind((标记名称*,序列=无回调=无)

    • 将给定事件* sequence 的回调绑定到标签 tagname *。将事件传递给项目时,将调用该项目的每个标签选项的回调。
  • tag_configure((标记名*,选项=无,*** kw *)

    • 查询或修改指定* tagname *的选项。

如果未提供* kw ,则返回 tagname 的选项设置的字典。如果指定了 option ,则为指定的 tagname 返回该 option 的值。否则,将选项设置为给定 tagname *的相应值。

  • tag_has(标签名项目=无)
    • 如果指定了* item ,则根据指定的 item 是否具有给定的 tagname *,返回 1 或 0.否则,返回具有指定标签的所有项目的列表。

可用性:Tk 8.6

  • xview(** args *)

    • 查询或修改树视图的水平位置。
  • yview(** args *)

    • 查询或修改树视图的垂直位置。

Ttk Styling

ttk中的每个窗口小部件都分配有一种样式,该样式指定组成窗口小部件的元素集以及它们的排列方式,以及元素选项的动态和默认设置。默认情况下,样式名称与窗口小部件的类名相同,但是可以由窗口小部件的样式选项覆盖。如果您不知道小部件的类名,请使用方法Misc.winfo_class()(somewidget.winfo_class())。

See also

  • 类别 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 *中的每个键都是一个选项,每个值应该是一个列表或一个 Tuples(通常),其中包含以 Tuples,列表或其他首选项分组的状态规范。状态规范是一个或多个状态然后是一个值的组合。

一个例子可能会使它更容易理解:

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()

请注意,选项的(状态,值)序列的 Sequences 确实很重要,例如,如果在前景选项中将 Sequences 更改为[('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 定义小部件布局。如果Ellipsis layoutspec *,则返回给定样式的布局规范。
  • layoutspec *(如果已指定)应为列表或其他某种序列类型(不包括字符串),其中每个项目应为一个 Tuples,第一个项目为布局名称,第二个项目应具有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 *)
    • 在给定的* etype *的当前主题中创建一个新元素,该元素应为“图像”,“来自”或“ vsapi”。后者仅在 Windows XP 和 Vista 的 Tk 8.6a 中可用,此处不再赘述。

如果使用“图像”,则* args 应该包含默认的图像名称,后跟 statespec/value 对(这是 imagespec),并且 kw *可能具有以下选项:

Note

    • border=padding
  • padding 是最多四个整数的列表,分别指定左边界,上边界,右边界和下边界。

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

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

    • sticky=spec
  • 指定如何在finally宗地中放置图像。 spec 包含零个或多个字符“ n”,“ s”,“ w”或“ e”。

    • width=width
  • 指定元素的最小宽度。如果小于零,则默认使用基本图像的宽度。

如果将“ from”用作* etype *的值,则element_create()将克隆现有元素。 * args *应该包含一个主题名称(从该主题名称开始克隆),以及一个可选的要从其克隆的元素。如果未指定要复制的元素,则将使用空元素。 * kw *被丢弃。

  • element_names ( )

    • 返回当前主题中定义的元素列表。
  • element_options(元素名称)

    • 返回* elementname *选项的列表。
  • theme_create((* themename parent = None settings = None *)

    • 创建一个新主题。

如果* themename 已经存在,这是一个错误。如果指定了 parent ,则新主题将从父主题继承样式,元素和布局。如果存在 settings *,则它们应具有与theme_settings()相同的语法。

  • theme_settings(主题名称设置)
    • 暂时将当前主题设置为* themename ,应用指定的 settings *,然后恢复之前的主题。

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

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 ,则返回正在使用的主题。否则,将当前主题设置为 themename *,刷新所有小部件并发出<>事件。

Layouts

如果布局不包含任何选项,则布局可以只是None,也可以是用于指定元素布置方式的选项命令。布局机制使用了打包几何 Management 器的简化版本:给定一个初始腔,为每个元素分配一个地块。有效的选项/值是:

Note

    • side: whichside
  • 指定放置元件的腔的哪一侧;顶部,右侧,底部或左侧之一。如果Ellipsis,则该元素将占据整个空腔。

    • sticky: nswe
  • 指定将元素放置在其分配的宗地内的位置。

    • 单位:0 或 1
  • 如果设置为 1,则出于Widget.identify()等人的目的,将该元素及其所有后代视为一个元素。它用于带有手柄的滚动条拇指之类的东西。

    • children: [sublayout… ]
  • 指定要放置在元素内部的元素列表。每个元素都是一个 Tuples(或其他序列类型),其中第一项是布局名称,另一个是Layout