tkinter.ttkTk主题小部件

源代码: Lib / tkinter / ttk.py


tkinter.ttk模块提供对Tk主题小部件集的访问,介绍在Tk 8.5。如果没有针对Tk 8.5编译Python,如果已经安装了Tile,仍然可以访问此模块。使用Tk 8.5的前一种方法提供了额外的好处,包括在X11下的抗锯齿字体渲染和窗口透明度(在X11上需要一个合成窗口管理器).

tkinter.ttk的基本思想是分开,在某种程度上可能,从实现其外观的代码实现小部件行为的代码

参见

Tk Widget样式支持
介绍对Tk的支持的文件

使用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, ScaleScrollbar)自动替换Tk部件.

这具有使用新小部件的直接好处,这些小部件可以跨平台提供更好的视觉和感觉;但是,替换小部件不完全兼容。主要区别在于Ttk小部件中不再存在诸如“fg”,“bg”等小部件选项以及与小部件样式相关的其他选项。相反,使用ttk.Style改善造型效果的类.

也可以看看

转换现有应用程序以使用平铺小部件
关于在移动应用程序使用新小部件时通常遇到的差异的专着(使用Tcl术语).

Ttk Widgets

Ttk有18个小部件,其中12个已经存在于tkinter:Button, Checkbutton, Entry, Frame,Label, LabelFrame, Menubutton, PanedWindow,Radiobutton, Scale, ScrollbarSpinbox。其他六个是新的:Combobox, Notebook,Progressbar, Separator, SizegripTreeview。它们都是Widget.

使用Ttk小部件为应用程序提供了改进的外观和感觉。如上所述,样式编码的方式有所不同.

代码:

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的更多信息,请参阅Styleclassdocumentation.

Widget

ttk.Widget定义了Tkthemed小部件支持的标准选项和方法,不应该直接实例化.

标准选项

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

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

可滚动窗口小部件选项

由ascrollbar控制的窗口小部件支持以下选项.

Option Description
xscrollcommand

用于与水平滚动条进行通信.

当小部件窗口中的视图发生变化时,小部件将根据scrollcommand生成一个Tcl命令.

通常这个选项包含方法Scrollbar.set()一些滚动条。只要窗口中的视图发生变化,这将导致滚动条更新.

yscrollcommand 用于与垂直滚动条进行通信。有关更多信息,请参阅上文.

标签选项

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

选项 说明
文本 指定要在窗口小部件内显示的文本字符串.
textvariable 指定其值的名称将用于代替text选项资源.
underline 如果设置,则指定文本字符串中字符tounderline的索引(从0开始)。下划线字符用于助记激活.
image 指定要显示的图像。这是一个或多个元素的列表。第一个元素是默认图像名称。如果状态规范/值对的序列由Style.map()定义,则指定不同的映像,当窗口小部件处于特定状态或状态组合时,使用该列表。列表中的所有图像应该具有相同的大小.
化合物

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

  • 文字:仅显示文字
  • 图片:仅显示图片
  • 顶部,底部,左侧,右侧:分别显示文字上方,下方,左侧或右侧的图像.
  • none:默认值。如果存在则显示图像,否则显示文件.
width 如果大于零,则指定为文本标签分配多少空间(内容宽度),如果小于零,则指定最小宽度。如果为零或未指定,则使用文本标签的自然宽度.

兼容性选项

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

小部件状态

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

Flag 描述
active 鼠标光标位于窗口小部件上,按下鼠标按钮将导致一些操作
禁用 在程序控制下窗口小部件被禁用
焦点 窗口小部件有键盘焦点
小工具被按下
选中 “开”,“真”或“当前”,用于检查按钮和半按钮
background Windows和Mac有一个“活动”或前景窗口的概念。background状态是为abackground窗口中的小部件设置的,并且为前景窗口中的//清除
只读 小部件不应该允许用户修改
alternate 特定于小部件的备用显示格式
无效 小部件的值无效

状态规范是一系列状态名称,可选择以感叹号为前缀表示该位已关闭的点.

ttk.Widget

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

class tkinter.ttk.Widget
identifyx, y

返回位置x y,或者空的字符串,该点不在任何元素内.

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

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

测试小部件的状态。如果未指定回调,则返回True如果窗口小部件状态匹配statespecFalse否则。如果指定了callbackis,那么如果widget状态匹配statespec.

statestatespec=None

修改或查询widget状态,则使用args调用它。如果指定了statespec,则根据它设置thewidget状态并返回一个新的statespec表示更改了哪些标志。如果没有指定statespec,则返回当前启用的状态标志.

statespec通常是一个列表或元组.

Combobox

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

的子类。除了继承自WidgetWidget.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.

中描述选项

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

选项 说明
exportselection 布尔值。如果设置,则窗口小部件选择链接到窗口管理器选择(例如,可以通过调用Misc.selection_get来返回).
justify 指定文本在窗口小部件中的对齐方式。of“left”,“center”或“right”.
height 指定弹出列表框的高度,以行为单位.
postcommand 在显示值之前立即调用的脚本(可能是使用Misc.register注册的)。它可以指定显示哪些值.
state “正常”,“只读”或“禁用”之一。在“只读”状态下,可能无法直接编辑该值,并且用户只能从下拉列表中选择值。在“正常”状态下,文本字段可以直接编辑。在“禁用”状态下,不可能进行交互.
textvariable 指定其值链接到窗口小部件值的名称。每当与该名称关联的值更改时,窗口小部件值都会更新,反之亦然。请参阅tkinter.StringVar.
values 指定要在下拉列表框中显示的值列表.
width 指定一个整数值,表示输入窗口的所需宽度,以小工具的字体的平均大小字符为单位。

虚拟事件

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

tttt.Combobox

class tkinter.ttk.Combobox
current(newindex=None

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

get ()

返回组合框的当前值.

set (value)

将组合框的值设为value.

Spinbox

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关键字.
to 浮动值。如果设置,这是增量按钮增加的最大值.
increment 浮动值。指定增量/减量按钮更改值的量。默认为1.0.
values 字符串或浮点值的序列。如果指定,增量/减量按钮将循环显示此序列中的项目,而不是递增或递减数字.
wrap 布尔值。如果True,递增和递减按钮将从to值循环到from值或from值循环到to值,respectively.
format 字符串值。它通过递增/递减按钮指定数字集的格式。它必须是“%W.Pf”形式,其中W是值的填充宽度,P是精度,’%’和’f’是字面的.
命令 Python可调用。无论何时按下递增或递减按钮都会被调用。

虚拟事件

旋转框小部件生成<< Increment>> 用户按下< Up>时的虚拟事件,以及<<< \u0026cre;>> 虚拟事件时userpresses< Down> .

ttk.Spinbox

class tkinter.ttk.Spinbox
get

返回spinbox的当前值.

set(value)

将spinbox的值设为value.

Notebook

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

选项

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

选项 描述
高度 如果存在且大于零,则指定窗格区域的所需高度(不包括内部填充或制表符)。否则,使用所有窗格的最大高度.
padding 指定要在笔记本外部添加的额外空间量。填充是一个列表,最多四个长度规格左上角。如果指定少于四个元素,则底部默认为top,right defaultsto left,top默认为left.
width 如果存在且大于零,则指定窗格区域的所需宽度(不包括内部填充)。否则,使用所有窗格的最大宽度.

选项

标签还有特定选项:

选项 说明
状态 “正常”,“禁用”或“隐藏”。如果“禁用”,则选项卡不可选。如果“隐藏”,则不显示标签.
sticky 指定子窗口在窗格区域中的定位方式。Value是包含零个或多个字符“n”,“s”,“e”或“w”的字符串。每个字母指的是儿童窗口所要求的旁边(北,南,东或西),按照grid()geometry manager.
padding 指定在thenotebook和此窗格之间添加的额外空间量。语法与此小部件使用的选项键相同.
text 指定要在选项卡中显示的文本.
image 指定要在选项卡中显示的图像。请参阅Widget.
复合 指定如何显示相对于文本的图像,如果存在选项文本和图像。SeeLabel选择法律价值.
underline 指定要在文本字符串中加下划线的字符的索引(从0开始)。带下划线的字符用于形式激活,如果Notebook.enable_traversal()被称为

标签

tab_id出现在ttk.Notebook可以采取以下任何一种形式:

  • 零和标签数量之间的整数
  • 儿童窗口的名称
  • 形式为“@ x,y”的位置规范,用于标识选项卡
  • 文字字符串“current”,用于标识当前选定的选项卡
  • 文字字符串“end”,返回标签数量(仅对Notebook.index()有效)

虚拟事件

这个小部件生成一个<< NotebookTabChanged>> 选择新标签后的虚拟事件.

ttk.Notebook

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

在笔记本上添加新标签.

如果窗口当前由笔记本管理但是隐藏了,则它将恢复到之前的位置.

查看选项卡可用选项列表的选项.

forget(tab_id)

删除tab_id指定的标签,映射并取消管理相关窗口.

hide (tab_id)

隐藏tab_id.

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

identify// (x, y

返回位置x, y的tab元素的名称,如果没有则返回空字符串

index// (tab_id)

返回选项卡的数字索引由tab_id指定,或者tab_id是字符串“end”.

insert (pos, child, **kw)

在指定位置插入窗格.

pos是字符串“end”,整数索引,或者是受管子级的名称。如果child已经由笔记本管理,移动到指定的位置.

有关可用选项列表,请参阅选项卡选项.

selecttab_id=None

选择指定的tab_id.

将显示关联的子窗口,并且未映射先前选择的窗口(如果不同)。如果tab_idisomitted,返回当前所选窗格的窗口小部件名称.

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

查询或修改特定的选项tab_id.

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

tabs()

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

enable_traversal

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

这将扩展包含thenotebook的顶层窗口的绑定,如下所示:

  • Control-Tab:选择当前所选标签后的标签.
  • Shift-Control-Tab:选择当前所选标签之前的标签.
  • Alt-K :其中K是任何标签的助记符(下划线)字符,将选择该标签.

可以为单个顶层中的多个笔记本启用遍历,包括嵌套笔记本。但是,如果所有窗格都有作为母版的笔记本,笔记本遍历才能正常工作.

进度条

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

选项

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

选项 描述
东方 其中一个“水平”或“垂直”。指定进度条的方向.
length 指定进度条长轴的长度(水平宽度,垂直高度).
模式 “确定”或“不确定”之一.
最大值 指定最大值的数字。默认为100.
value 进度条的当前值。在“确定”模式中,这表示已完成的工作量。在“不确定”模式下,它被解释为modulo maximum;也就是说,进度条在其值增加maximum.
变量 与选项值链接的名称。如果指定,进度条的值将自动设置为该名称的值,只要后者被修改.
phase 只读选项。只要窗口小部件的值大于0,并且不确定模式小于最大值,窗口小部件就会定期递增此值的值。当前主题可以使用此选项来提供额外的动画效果.

ttk.Progressbar

class tkinter.ttk.Progressbar
startinterval=None

开始自动增量模式:安排一个周期性的定时器事件,调用Progressbar.step()interval毫秒。如果省略,interval默认为50毫秒.

step (amount=None )

如果省略,则将进度条的值增加amount.

amount默认为1.0。

stop)

停止自动增量模式:取消由Progressbar.start()为此进度条启动的任何定期计时器事件.

隔离器

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

除了从ttk.Widget.

继承的方法之外没有其他方法选项

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

选项 说明
东方 “水平”或“垂直”之一。指定分隔符的方向.

Sizegrip

ttk.Sizegrip小部件(也称为成长框)允许用户通过按下并拖动手柄来确定包含顶部窗口的大小。

这个小部件既没有特定的选项也没有特定的方法,除了继承自ttk.Widget.

特定于平台的笔记

  • 在MacOS X上,顶层窗口自动包含内置大小的夹点默认。添加Sizegrip是无害的,因为内置的按钮只会掩盖小部件.

Bugs

  • 如果相对于屏幕的右下角(例如……)指定了包含顶层的位置,则Sizegrip小部件将不会调整窗口的大小.
  • 此小部件仅支持“东南”调整大小.

Treeview

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

可以通过设置窗口小部件选项displaycolumns来控制显示数据值的顺序。树窗口小部件还可以显示列标题。可以通过thewidget选项列中列出的数字或符号名称访问列。请参见列标识符.

每个项目都由唯一名称标识。如果调用者未提供它们,则窗口小部件将生成项目ID。有一个名为{}的特殊根项。根项目本身不会显示;它的孩子出现在等级的顶层.

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

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

选项

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

选项 描述
columns 列标识符列表,指定列数及其名称.
displaycolumns 列标识符(符号或整数索引)列表,指定哪些数据列aredisplay和它们出现的顺序,或字符串“#all”.
height 指定应该可见的行数。注意:请求的宽度由总和确定column widths.
padding 指定小部件的内部填充。Thepadding是一个最多四个长度规格的列表.
selectmode

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

注意应用程序代码和标签绑定可以随意设置选择,无论该选项的值如何.

show

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

  • tree:在#0列中显示树标签.
  • 标题:显示标题行.

默认为“树标题”,即显示等位元.

注意:列#0总是指树列,即使show =“tree“未指定.

项目选项

可以为insert和itemwidget命令中的项目指定以下项目选项.

选项 描述
text 为项目显示的文字标签.
image 显示在标签左侧的Tk图像。

与item.

每个项目应具有与widgetoption列相同数量的值。如果值小于列,则假定其值为空。如果列的值更多,则忽略额外的值.

打开 真/假值表示该项目的孩子是否应该显示或隐藏.
tags 与此项目相关的标签列表.

Tag选项

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

选项 说明
前景 指定文本前景色.
background 指定单元格或项目背景颜色.
字体 指定绘制文本时使用的字体.
图片 指定项目图像,以防项目的图像选项为空.

列标识符

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

  • 列列表中的符号名称option.
  • 一个整数n,指定第n个数据列.
  • 形式为#n的字符串,其中n是一个整数,指定第n个displaycolumn。

Notes:

  • Item’s选项值的显示顺序可能与它们存储的顺序不同.
  • Column#0总是指树列,即使show =“tree”没有指定.

A数据列号是项目选项值列表的索引;显示列号是树中显示值的列号。树标签显示在#0列中。如果未设置选项displaycolumns,则数据列n将显示在#n + 1列中。同样,列#0始终指向树列.

虚拟事件

Treeview小部件生成以下虚拟事件.

事件 描述
<< TreeviewSelect>> 每当选择改变时生成.
\u0026lt;\u0026lt;TreeviewOpen\u0026gt;\u0026gt; Generated在设置之前,焦点项目打开=真.
\u0026lt;\u0026lt;TreeviewClose\u0026gt;\u0026gt; 将焦点项设置为open = False后生成.

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

ttk.Treeview

class tkinter.ttk.Treeview
bboxitem, column=None

以(x,y,width,height)形式返回指定item的边界框(相对于树视图窗口小部件的窗口).

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

get_children (item=None)

返回子项列表属于item.

如果item没有指定,返回root children.

set_childrenitem, *newchildren

取代itemnewchildren.

孩子们在场item中没有newchildren从树上下来。newchildren可能是item的祖先。注意,没有指定newchildren会导致item的孩子们分离.

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

查询或修改选项指定column.

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

有效的选项/值为:

  • id
    返回列名。这是一个只读选项.
  • anchor:标准Tk锚值之一.
    指定此列中的文本应如何与单元格对齐.
  • max width:width
    列的最小宽度(以像素为单位)。当窗口小部件调整大小或用户拖动列时,树视图窗口小部件不会使列小于此选项指定的列.
  • stretch:True / False
    指定在调整小部件大小时是否应调整列的宽度.
  • width:width
    列的宽度,以像素为单位.

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

delete*items

删除所有指定的items及其所有后代.

根项不能删除.

detach (*items )

取消链接所有指定的items从树上

这些物品及其所有后代仍然存在,可以在树的另一个地方重新插入,但不会显示.

根项目可能不会分离.

exists (item)

如果指定的True存在于树中,则返回item

focusitem=None

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

headingcolumn, option=None, **kw)

查询或修改指定的标题选项column.

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

有效的选项/值是:

  • text:text
    列标题中显示的文本.
  • image:imageName
    指定图像到显示在列标题的右侧.
  • anchor:anchor
    指定标题文本的对齐方式。standardTk锚值之一.
  • 命令:callback
    按下标题标签时要调用的回调.

要配置树列标题,请使用column =“#0”调用它.

identify (component, x, y

返回指定的component的描述xy,或者如果没有这样的component,那就是空字符串

identify_row// (y)

返回位置上项目的商品ID y.

identify_columnx

返回位置x.

的单元格的数据列标识符。树列有ID#0 .

identify_region(x, y)

返回以下之一:

地区 含义
标题 树木标题区
分隔器 两列之间的空格标题
tree 树区
/ /数据单元

可用性: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小于或等于零,则新节点为插入开始;如果index大于或等于当前的孩子数,则在最后插入。如果指定了iid,则将其用作项目标识符;iid必须不存在于树中。否则,会生成一个新的唯一标识符.

查看可用点列表的项目选项.

item (item, option=None, **kw

查询或修改指定的item.

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

moveitem, parent, index

给出的相应值//移动itemindex中定位parent孩子的名单.

在其中一个后代下移动物品是违法的。如果index不等于或等于零,item被移到了开头;大于或等于子的数量,它被移动到最后。如果item被拆卸,则重新连接.

next (item)

返回item下一个兄弟姐妹,或”如果item是其父母的最后一个孩子.

parentitem

返回item, 或者如果 item是在层次结构的顶层.

previtem

返回item以前的兄弟姐妹的标识符,或”如果item是其父母的第一个孩子.

reattach(item, parent, index)

Treeview.move().

seeitem)的别名

确保item可见.

item的所有祖先打开选项设置为True,并在必要时滚动窗口,以便item位于树的可见部分内.

selectionselop=None, items=None

如果selop未指定,返回所选项目。否则,按照以下选择方法进行操作.

自版本3.6以来删除,将在3.8版本中删除:使用selection()不推荐用于更改选择状态。请改用以下选择方法.

selection_set*items

items成为新的选择.

版本3.6更改:items可以作为单独的参数传递,而不仅仅作为单个元组.

selection_add (*items)

添加items给选择.

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

selection_remove*items)

从选择中删除items

在版本3.6中更改:items可以作为单独的参数传递,而不仅仅作为单个元组传递.

selection_toggle*items

items.

版本3.6更改:items可以作为单独的参数传递,而不仅仅作为单个元组传递.

set (item, column=None, value=None

使用一个参数,返回指定的列/值对的字典item。使用两个参数,返回指定的column的当前值。使用三个参数,将给定column中给定的item的值设置为指定的value.

tag_bindtagname, sequence=None, callback=None

将给定事件sequence的回调绑定到标签tagname。当一个事件被传递给一个项目时,每个theitem的标签选项的回调被调用.

tag_configuretagname, option=None, **kw

查询或修改指定的tagname.

的选项如果没有给出kw,则返回tagname的选项设置的dict。如果指定了option,则返回指定optiontagname。否则,将选项设置为给定的对应值tagname.

tag_hastagname, item=None

如果指定了item,则返回1或0,具体取决于是否指定item有给定的tagname。否则,返回具有指定标签的所有项目的列表.

可用性:Tk 8.6

xview*args

查询或修改树视图的水平位置.

yview*args

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

Ttk造型

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

参见

Tcl’2004会议演示文稿
本文档解释了主题引擎的工作方式
class tkinter.ttk.Style

本课程是用来操纵风格数据库.

configure (style, query_opt=None, **kw

style.

中查询或设置指定选项的默认值kw中的每个键都是一个选项,每个值都是一个字符串,用于标识该选项的值.

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

from tkinter import ttkimport tkinterroot = tkinter.Tk()ttk.Style().configure("TButton", padding=6, relief="flat",   background="#ccc")btn = ttk.Button(text="Sample")btn.pack()root.mainloop()
mapstyle, query_opt=None, **kw

查询或设置指定选项的动态值(s)在style.

中的每把钥匙kw是一个选项,每个值应该是一个列表或atuple(通常)包含以元组,列表,或其他首选项分组的statepec。statepec是一个或多个状态的复合,然后是一个值

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

import tkinterfrom tkinter import ttkroot = 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")]例如,在前景选项中,当窗口小部件处于活动或按下状态时,结果将是ablue前景.

lookupstyle, option, state=None, default=None

返回为optionstyle.

如果state如果指定,则应该是一个或多个状态的序列。如果设置了default参数,则在没有找到选项说明的情况下将其用作后备值.

要检查Button默认使用的字体:

from tkinter import ttkprint(ttk.Style().lookup("TButton", "font"))
layoutstyle, layoutspec=None

为给定的style定义窗口小部件布局。如果省略layoutspec,则返回给定样式的布局规范.

layoutspec,如果指定,应该是列表或其他一些序列类型(不包括字符串),其中每个项目应该是一个元组第一项是布局名称,第二项应该有布局中描述的格式.

要理解格式,请参阅下面的例子(它不是做任何有用的事情):

from tkinter import ttkimport tkinterroot = 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_createelementname, etype, *args, **kw

在给定的etype的当前主题中创建一个新元素,它应该是“image”,“from”或“vsapi”。后者仅适用于Windows XP和Vista的Tk 8.6a,此处不再描述.

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

  • border = padding
    padding是一个最多四个整数的列表,分别指定左,上,右和下边框.
  • height=height
    指定元素的最小高度。如果小于零,则基本图像的高度用作默认值.
  • padding=padding
    指定元素的内部填充。默认为border的valueif未指定.
  • sticky=spec
    指定图像在最终包裹中的放置方式。speccontains零个或多个字符“n”,“s”,“w”或“e”.
  • width = width
    指定元素的最小宽度。如果小于零,则基本图像的宽度用作默认值.

如果“from”用作etype,element_create()的值将克隆存在元素。args应该包含一个themename,从中克隆元素,并且可选地包含要克隆的元素。如果未指定要克隆的元素,则将使用空元素。kw被丢弃.

element_names)

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

element_optionselementname

返回elementname的选项列表.

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

创建一个新主题

如果themename已经存在,这是一个错误。如果指定了parent,则新主题将从parenttheme继承样式,元素和布局。如果settings存在,他们应该使用相同的方法theme_settings().

theme_settingsthemename, settings

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

settings中的每个键都是一个样式,每个值可能包含keys’configure’,’map’,’layout’和’element create’并且它们应该具有与方法Style.configure(), Style.map(), Style.layout()Style.element_create()分别相同的格式.

例如,让我们更改Combobox默认主题有点:

from tkinter import ttkimport tkinterroot = 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,刷新所有小部件并发出<< ThemeChanged>>event.

Layouts

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

  • side:whichside
    指定放置元素的腔的哪一侧;一个顶部,右侧,底部或左侧。如果省略,则元素占据整个空洞.
  • sticky:nswe
    指定元素放置在其分配的包裹内的位置.
  • 单位:0或1
    如果设置为1,则为了Widget.identify()等,将元素及其所有后代视为单个元素。它适用于带有把手的滚动条拇指.
  • children:[sublayout …]
    指定放置在元素内的元素列表。Eachelement是一个元组(或其他序列类型),其中第一个项目是布局名称,另一个是布局.