– Tk主题小部件 – 使用Tk的图形用户界面(Python教程)(参考资料)
tkinter.ttk
– Tk主题小部件
源代码: 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
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
改善造型效果的类.
也可以看看
- 转换现有应用程序以使用平铺小部件
- 关于在移动应用程序使用新小部件时通常遇到的差异的专着(使用Tcl术语).
Ttk Widgets
Ttk有18个小部件,其中12个已经存在于tkinter:Button
, Checkbutton
, Entry
, Frame
,Label
, LabelFrame
, Menubutton
, PanedWindow
,Radiobutton
, Scale
, Scrollbar
和Spinbox
。其他六个是新的: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")
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
classdocumentation.
Widget
ttk.Widget
定义了Tkthemed小部件支持的标准选项和方法,不应该直接实例化.
可滚动窗口小部件选项
由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
-
identify
(x, y)-
返回位置x y,或者空的字符串,该点不在任何元素内.
x和y是相对于小部件的像素坐标.
instate
(statespec, callback=None, *args, **kw)-
测试小部件的状态。如果未指定回调,则返回
True
如果窗口小部件状态匹配statespec和False
否则。如果指定了callbackis,那么如果widget状态匹配statespec.
state
(statespec=None)-
修改或查询widget状态,则使用args调用它。如果指定了statespec,则根据它设置thewidget状态并返回一个新的statespec表示更改了哪些标志。如果没有指定statespec,则返回当前启用的状态标志.
statespec通常是一个列表或元组.
Combobox
ttk.Combobox
widget将文本字段与值的下拉列表组合在一起。这个小部件是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
.
中描述选项
这个小部件接受以下特定选项:
选项 说明 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
.
的子类。除了从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
.
中描述选项
这个小部件接受以下特定选项:
选项 | 说明 |
---|---|
从 | 浮动值。如果设置,这是递减按钮将递减的最小值。当用作参数时,必须被称为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已经由笔记本管理,移动到指定的位置.
有关可用选项列表,请参阅选项卡选项.
select
(tab_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
-
start
(interval=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命令中的项目指定以下项目选项.
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
-
bbox
(item, column=None)-
以(x,y,width,height)形式返回指定item的边界框(相对于树视图窗口小部件的窗口).
如果指定了column,则返回该单元格的边界框。如果item是不可见的(即,如果它是一个封闭项目的后代或在屏幕外滚动),则返回一个空字符串.
get_children
(item=None)-
返回子项列表属于item.
如果item没有指定,返回root children.
set_children
(item, *newchildren)-
取代item有newchildren.
孩子们在场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。
focus
(item=None)-
如果指定了item,则将焦点项设置为item。否则,返回当前焦点项目,或“如果没有。”
heading
(column, option=None, **kw)-
查询或修改指定的标题选项column.
如果kw未给出,返回标题选项值的字典。如果指定了option,则返回该option的值。否则,将选项设置为相应的值.
有效的选项/值是:
-
- text:text
- 列标题中显示的文本.
-
- image:imageName
- 指定图像到显示在列标题的右侧.
-
- anchor:anchor
- 指定标题文本的对齐方式。standardTk锚值之一.
-
- 命令:callback
- 按下标题标签时要调用的回调.
要配置树列标题,请使用column =“#0”调用它.
-
identify
(component, x, y)-
返回指定的component的描述x和y,或者如果没有这样的component,那就是空字符串
identify_row
// (y)-
返回位置上项目的商品ID y.
identify_column
(x)-
返回位置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.
move
(item, parent, index)-
给出的相应值//移动item在index中定位parent孩子的名单.
在其中一个后代下移动物品是违法的。如果index不等于或等于零,item被移到了开头;大于或等于子的数量,它被移动到最后。如果item被拆卸,则重新连接.
next
(item)-
返回item下一个兄弟姐妹,或”如果item是其父母的最后一个孩子.
parent
(item)-
返回item, 或者如果 item是在层次结构的顶层.
prev
(item)-
返回item以前的兄弟姐妹的标识符,或”如果item是其父母的第一个孩子.
reattach
(item, parent, index)-
Treeview.move()
.
see
(item)的别名-
确保item可见.
将item的所有祖先打开选项设置为
True
,并在必要时滚动窗口,以便item位于树的可见部分内.
selection
(selop=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_bind
(tagname, sequence=None, callback=None)-
将给定事件sequence的回调绑定到标签tagname。当一个事件被传递给一个项目时,每个theitem的标签选项的回调被调用.
tag_configure
(tagname, option=None, **kw)-
查询或修改指定的tagname.
的选项如果没有给出kw,则返回tagname的选项设置的dict。如果指定了option,则返回指定option的tagname。否则,将选项设置为给定的对应值tagname.
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()).
参见
- 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()
map
(style, 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前景.
lookup
(style, option, state=None, default=None)-
返回为option在style.
如果state如果指定,则应该是一个或多个状态的序列。如果设置了default参数,则在没有找到选项说明的情况下将其用作后备值.
要检查Button默认使用的字体:
from tkinter import ttkprint(ttk.Style().lookup("TButton", "font"))
layout
(style, 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_create
(elementname, 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_options
(elementname)-
返回elementname的选项列表.
theme_create
(themename, parent=None, settings=None)-
创建一个新主题
如果themename已经存在,这是一个错误。如果指定了parent,则新主题将从parenttheme继承样式,元素和布局。如果settings存在,他们应该使用相同的方法
theme_settings()
.
theme_settings
(themename, 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是一个元组(或其他序列类型),其中第一个项目是布局名称,另一个是布局.