ttk

ttk模块提供对Tk 8.5中引入的Tk主题窗口小部件集的访问。如果Python未针对Tk 8.5进行编译,只要安装了Tile即可继续使用此模块。然而,新的Tk提供的一些功能,如X11下的反锯齿字体渲染,窗口透明度(在X11上,您将需要一个合成窗口管理器)将会丢失。

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

扩展内容

Tk Widget样式支持为Tk带来主题支持的文档

1.使用Ttk

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

import ttk

但是这样的代码:

from Tkinter import *

可以选择使用这个:

from Tkinter import *
from ttk import *

然后,几个ttk小部件(Button,Checkbutton,Entry,Frame,Label,LabelFrame,Menubutton,PanedWindow,Radiobutton,Scale和Scrollbar)将自动替换Tk小部件。

这具有使用新小部件的直接好处,可以跨平台提供更好的外观和感觉,但请注意它们并不完全兼容。主要区别在于,小部件选项(例如“fg”,“bg”和与小部件样式相关的其他小部件选项不再存在于Ttk小部件中。使用ttk.Style以达到相同(或更好)的造型。

扩展内容

转换现有的应用程序以使用Tile小部件一种文本,它以Tcl的形式谈论通常在转换应用程序以使用新小部件时发现的差异。

2. Ttk部件

Ttk带有17个小部件,其中11个已经存在于Tkinter中:Button,Checkbutton,Entry,Frame,Label,LabelFrame,Menubutton,PanedWindow,Radiobutton,Scale和Scrollbar。 6个新的窗口小部件类是:Combobox,Notebook,Progressbar,Separator,Sizegrip和Treeview。 所有这些类都是Widget的子类。

如前所述,您会注意到样式代码中的外观和感觉也发生了变化。为了演示后者,下面显示了一个非常简单的例子。

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

3.工具

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

3.1 标准选项

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

选项

描述

指定窗口类。该类用于查询窗口其他选项的选项数据库,确定窗口的默认绑定标签并选择窗口小部件的默认布局和样式。这是只能在窗口创建时指定的只读选项。

光标

指定要用于小部件的鼠标光标。如果设置为空字符串(缺省值),则光标将从父窗口小部件继承。

采取重点

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

样式

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

3.2 可滚动的部件选项

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

选项

描述

xscrollcommand

用于与水平滚动条进行通信。当小部件窗口中的视图改变时,小部件将根据滚动命令生成Tcl命令。通常这个选项由一些滚动条的Scrollbar.set()方法组成。这将导致滚动条在窗口中的视图改变时被更新。

yscrollcommand

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

3.3 标签选项

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

选项

描述

文本

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

textVariable

指定一个名称,其值将用于代替文本选项资源。

强调

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

图片

指定要显示的图像。这是一个或多个元素的列表。第一个元素是默认图像名称。列表的其余部分是由Style.map()定义的一系列statespec / value对,指定在小部件处于特定状态或状态组合时要使用的不同图像。列表中的所有图像应具有相同的大小。

复合

指定如何在文本和图像选项都存在的情况下显示相对于文本的图像。有效值为:文本:仅显示文本图像:仅显示图像顶部,底部,左侧,右侧:分别显示图像上方,下方,左侧或右侧的图像。none:默认值。显示图像如果存在,否则显示文本。

宽度

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

  • 文本:仅显示文本
  • 图像:仅显示图像
  • 顶部,底部,左侧,右侧:分别显示图像上方,下方,左侧或右侧的图像。
  • none:默认值。显示图像如果存在,否则显示文本。
width If greater than zero, specifies how much space, in character widths, to allocate for the text label; if less than zero, specifies a minimum width. If zero or unspecified, the natural width of the text label is used.  

3.4 兼容性选项

选项

描述

state

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

3.5 Widget区域

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

标志

描述

active

鼠标光标位于窗口小部件上并按下鼠标按钮将导致一些操作发生。

disabled

在程序控制下,Widget被禁用。

focus

小工具有键盘焦点。

pressed

小工具被按下。

selected

“开”,“真”或“当前”,例如Checkbuttons和单选按钮。

background

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

readonly

小部件不应允许用户修改。

alternate

特定于窗口小部件的替代显示格式。

invalid

小部件的值是无效的。

状态规范是一系列状态名称,可选地以感叹号作为前缀,指示该位关闭。

3.6 ttk.Widget

除了下面描述的方法之外,ttk.Widget类还支持Tkinter.Widget.cget()Tkinter.Widget.configure()方法。

class ttk.Widgetidentify(x, y)

返回位于所述元素的名称X ÿ,或空字符串,如果点不任何元件之内。

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

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

测试小部件的状态。 如果未指定回调,则返回True,否则返回True。否则返回False。 如果指定了回调,那么如果小部件状态匹配statespec,则会使用args调用回调。

state([statespec=None])

修改或读取小部件状态。如果指定了statespec,则相应地设置窗口小部件的状态,并返回一个新的statespec来指示哪些标志已更改。如果没有指定statespec,则返回当前启用的状态标志。

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

4.组合框

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。

4.1 选项

该小部件接受以下选项:

选项

描述

exportselection

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

justify

指定文本在窗口小部件中的排列方式。“左”,“中”或“右”之一。

height

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

postcommand

一个脚本(可能注册了Misc.register()),在显示值之前立即调用它。它可以指定显示哪些值。

state

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

textVariable

指定一个名称,其值与小部件值链接。每当与该名称关联的值发生更改时,窗口小部件值就会更新,反之亦然。请参阅Tkinter.StringVar。

values

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

width

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

4.2 虚拟事件

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

4.3. ttk.Combobox

class ttk.Comboboxcurrent([newindex=None])

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

get()

返回组合框的当前值。

set(value)

将组合框的值设置为

5.Notebook

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

5.1 选项

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

选项

描述

高度

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

填充

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

宽度

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

5.2 标签选项

还有标签的特定选项:

选项

描述

state

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

sticky

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

padding

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

text

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

image

指定要在选项卡中显示的图像。查看Widget中描述的选项图像。

compound

指定如何在文本和图像选项都存在的情况下显示相对于文本的图像。有关合法值,请参阅标签选项。

underline

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

5.3 标签标识符

存在于几种方法中的tab_idttk.Notebook可以采取以下任何形式:

  • 介于零和选项卡数之间的整数。
  • 子窗口的名称。
  • 表单“@ x,y”的位置规范,用于标识选项卡。
  • 字符串“current”,标识当前选择的选项卡。
  • 文字字符串“end”,它返回选项卡的数量(仅适用于Notebook.index())。

5.4 虚拟事件

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

5.5. ttk.Notebook

class ttk.Notebookadd(child, **kw)

向笔记本添加一个新选项卡。

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

请参阅选项卡选项以获取可用选项的列表。

forget(tab_id)

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

hide(tab_id)

隐藏由tab_id指定的选项卡。

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

identify(x, y)

返回位置xy处的制表符元素的名称,如果没有,则返回空字符串。

index(tab_id)

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

insert(pos, child, **kw)

在指定的位置插入窗格。

pos是字符串“结束”,一个整数索引或管理的孩子的名字。如果孩子已经被笔记本管理,将其移动到指定的位置。

请参阅选项卡选项以获取可用选项的列表。

select([tab_id])

选择指定的tab_id

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

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

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

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

tabs()

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

enable_traversal()

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

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

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

可以启用单个顶层中的多个笔记本进行遍历,包括嵌套笔记本。但是,笔记本遍历只有在所有窗格都有作为主人的笔记本时才能正常工作。

6.进度条

ttk.Progressbar小部件显示长时间运行的状态。它可以以两种模式运行:确定模式显示相对于要完成的工作总量完成的量,并且不确定模式提供动画显示以让用户知道发生了某些事情。

6.1 选项

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

选项

描述

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

长度

指定进度条的长轴的长度(如果是水平则为宽度,如果为垂直则为高度)。

模式

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

最大

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

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

变量

与选项值链接的名称。如果指定,则修改后者时,进度栏的值会自动设置为该名称的值。

只读选项。只要该值大于0并且在确定模式下小于最大值,该部件就会周期性地增加此选项的值。该选项可以被当前主题使用以提供额外的动画效果。

6.2. ttk.Progressbar

class ttk.Progressbarstart([interval])

开始自动增量模式:计划一个重复计时器事件,该事件调用Progressbar.step()每个间隔毫秒。如果省略,则时间间隔默认为50毫秒。

step([amount])

数量 增加进度条的值。

如果省略,则amount 默认为1.0。

stop()

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

7.分离器

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

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

7.1 选项

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

选项

描述

orient

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

8. Sizegrip

ttk.Sizegrip微件(也称为成长盒)允许用户通过按下并拖动把手来调整含顶层窗口。

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

8.1 平台特定的注释

  • 在Mac OS X上,顶层窗口默认会自动包含一个内置的大小夹点。 添加一个Sizegrip是无害的,因为内置的抓取只会掩盖widget.8.2.Bugs
  • 如果包含顶层的位置是相对于屏幕右侧或底部(例如....)指定的,则该Sizegrip窗口小部件不会调整窗口大小。
  • 此小部件仅支持“southeast”调整大小。

9.树视图

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

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

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

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

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

9.1 选项

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

选项

描述

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

displaycolumns

一列列标识符(符号或整数索引),用于指定显示哪些数据列及其出现顺序或字符串“#all”。

高度

指定应该可见的行数。注意:请求的宽度由列宽的总和确定。

填充

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

选择模式

控制内置类绑定如何管理选择。“扩展”,“浏览”或“无”之一。如果设置为“扩展”(默认),则可以选择多个项目。如果“浏览”,则一次只能选择一个项目。如果“无”,选择将不会改变。请注意,无论此选项的值如何,应用程序代码和标签绑定都可以设置所需的选择。

显示

包含零个或多个以下值的列表,指定要显示的树的哪些元素。树:显示列#0中的树标签。标题:显示标题行。默认是“树状标题”,即显示所有元素。注意:即使未指定show =“tree”,列#0始终指向树列。

  • 树:显示列#0中的树标签。
  • 标题:显示标题行。

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

注意:即使未指定show =“tree”,列#0始终指向树列。

9.2 项目选项

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

选项

描述

文本

要为项目显示的文本标签。

图片

Tk图像,显示在标签的左侧。

与该项目关联的值列表。每个项目都应该具有与小部件选项列相同数量的值。如果数值少于列数,则其余数值假定为空。如果有多个列的值,则会忽略额外的值。

打开

真/假值指示项目的孩子是否应该显示或隐藏。

标签

与此商品相关的标签列表。

9.3 标签选项

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

选项

描述

前景

指定文本前景色。

背景

指定单元格或项目背景颜色。

字体

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

图片

指定项目图像,以防项目的图像选项为空。

9.4 列标识符

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

  • 列列表选项中的符号名称。
  • 一个整数n,指定第n个数据列。
  • 格式为#n的字符串,其中n是一个整数,指定第n个显示列。

注意:

  • 商品的选项值可能以不同于其存储顺序的顺序显示。
  • 即使未指定show =“tree”,列#0始终指向树列。

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

9.5 虚拟事件

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

事件

描述

<< TreeviewSelect >>

每当选择更改时生成。

<< TreeviewOpen >>

在设置要打开的焦点项目之前生成= True。

<< TreeviewClose >>

在将焦点项目设置为打开= False之后生成。

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

9.6. ttk.Treeview

class ttk.Treeviewbbox(item, column=None)

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

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

get_children([item])

返回属于项目的子列表。

如果未指定项目,则返回根子项。

set_children(item, *newchildren)

用新的子项目替换子项目

项目 中出现的不在新的子项目身上的子项目从树上分离。在没有项目newchildren可能的父项目。请注意,不指定newchildren会导致分离项目的子项。

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

查询或修改指定的选项。

如果没有给出kw,则返回列选项值的字典。如果选项指定然后该值选项返回。否则,将选项设置为相应的值。

有效的选项/值是:

  • id返回列名称。这是一个只读选项。
  • 锚点:标准Tk锚点值之一。指定该列中的文本应该如何与单元格对齐。
  • minwidth:width列的最小宽度(以像素为单位)。当小部件被调整大小或用户拖动列时,treeview小部件不会使该列的大小小于此选项指定的大小。
  • stretch:True / False指定在调整窗口小部件时是否应调整列的宽度。
  • width:width列的宽度(以像素为单位)。要配置树列,请使用column =“#0”调用此命令delete(* items)删除所有指定的项目及其所有后代。根项目可能不会被删除.detach *项目)取消树中所有指定项目的链接。项目及其所有后代仍然存在,可能会重新插入树中的其他位置,但不会显示。根项目可能无法分离。存在 (item)如果指定的项目存在于tree.focus([item = None])中,则返回True。如果指定item,则将焦点项目设置为item。 否则,返回当前的焦点项,或者''如果没有.heading(column,option = None,** kw)查询或修改指定列的标题选项。如果没有给出kw,则返回一个字典 标题选项值。 如果指定了选项,则返回该选项的值。 否则,将选项设置为相应的值。有效选项/值为:
  • 文本:文本要在列标题中显示的文本。
  • image:imageName指定要显示在列标题右侧的图像。
  • anchor:anchor指定标题文本应如何对齐。标准Tk锚定值之一。
  • command:callback当按下标题标签时要调用的回调函数。要配置树列标题,请使用column =“#0”调用此函数.identify(component,x,y)返回该点下指定组件的描述由x和y给出,或者如果在该位置不存在这样的组件,则为空字符串.identify_row(y)返回位置y处的项目的项目ID。返回位置x处的单元的数据列标识符。树列有ID#0.identify_region(x,y)返回下列值之一:regionmeaningheadingTree标题area.separatorSpace两列之间headings.tree树area.cellA数据单元格。
  • 可用性:Tk 8.6.identify_element(x,y)返回元素在位置x,y.Availability:Tk 8.6.index(item)返回其父节点的children.insert列表中的整数索引(parent,index,iid = None,** kw)创建一个新项目并返回新创建的item.parent的项目标识符是父项目的项目标识,或者是空的st环创建一个新的顶级项目。索引是一个整数,或者值“end”,指定在父节点的孩子列表中插入新项目的位置。如果index小于或等于零,则新节点插入在开始处;如果index大于或等于当前孩子的数量,则将其插入到最后。如果指定了iid,则将其用作项目标识符; iid不能在树中存在。否则,将生成一个新的唯一标识符。有关可用points.item列表的项目选项(item [,option [,** kw]])查询或修改指定项目的选项。如果未给出任何选项,带有选项/值的字典返回。如果指定了选项,则返回该选项的值。否则,将选项设置为由kw.move(item,parent,index)给出的相应值。将项目移动到父项子项列表中的位置索引。将项目移动到其子项下是非法的。如果索引小于或等于零,则将项目移至开头;如果大于或等于子女人数,则移至最后。如果项目被分离,它是reattached.next(item)返回项目的下一个兄弟的标识符,或者''如果item是其父项的最后一个子项目(项目)返回项目的父项目的ID, '如果item位于hierarchy.prev(item)的顶层,则返回item的前一个兄弟节点的标识符,如果item是parent.reattach(item,parent,index)的第一个子节点,则返回''的别名。 Treeview.move()。see(item)确保项目可见。所有项目的祖先打开选项为True,并在必要时滚动窗口小部件,以便该项目位于tree.selection的可见部分内[[selop = None [,items = None]])如果未指定selop,则返回选定的项目。否则,它将根据以下选择方法进行操作.selection_set(items)items成为新的selection.selection_add(items)将items添加到selection.selection_remove(items)从selection.selection_toggle中删除项目(items)切换选择状态items.set(item,column = None,value = None)中每个项目的值使用一个参数,返回指定项目的列/值对的字典。使用两个参数,返回指定列的当前值。使用三个参数,将给定项中给定列的值设置为指定的值。tag_tag_bind(tagname,sequence = None,callback = None)将给定事件序列的回调绑定到标记标记名。当事件被传送到一个项目时,每个项目的标签选项的回调被调用.tag_configure(tagname,option = None,** kw)查询或修改指定标记名的选项。如果没有给出kw,返回标记名的选项设置的字典。如果指定了选项,则返回指定标记名的该选项的值。否则,将选项设置为给定tagname.tag_has(tagname [,item])的相应值。如果指定item,则根据指定的项是否具有给定的标记名返回1或0。否则,返回具有指定标签的所有项目的列表。可用性:Tk 8.6xview(* args)查询或修改treeview.yview的水平位置(* args)查询或修改treeview的垂直位置。 Ttk StylingTag中的每个小部件都分配了一种样式,它指定了构成小部件的一组元素以及它们的排列方式,以及元素选项的动态和默认设置。默认情况下,样式名称与小部件的类名称相同,但可能会被小部件样式选项覆盖。如果小部件的类名未知,请使用方法Misc.winfo_class()(somewidget.winfo_class())。另请参见Tcl'2004会议演示文稿本文档说明主题引擎如何工作类ttk.StyleThis类用于操作样式database.configure(style,query_opt = None,** kw)在样式中查询或设置指定选项的默认值。每个kw键是一个选项,每个值都是一个字符串,用于标识值fo
  • border = padding padding是最多四个整数的列表,分别指定左边界,右边界,右边界和下边界。
  • height = height指定元素的最小高度。如果小于零,则基础图像的高度将用作默认值。
  • padding = padding指定元素的内部填充。如果未指定,则默认为边框的值。
  • sticky = spec指定图像放置在最终宗地内的方式。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已经存在,那是错误的。如果指定了父项,则新主题将继承父主题的样式,元素和布局。如果存在设置,则预计它们具有与用于的相同的语法theme_settings()

theme_settings(themename, settings)

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

设置中的每个键都是一种样式,每个值可以包含键'configure','map','layout'和'element create',并且它们预期具有Style.configure()方法指定的相同格式, Style.map(),Style.layout()和Style.element_create()。

作为一个例子,让我们稍微改变默认主题的Combobox:

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

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

10.1 布局

布局可以是None,如果不需要任何选项,或者指定如何排列元素的选项字典。布局机制使用包几何管理器的简化版本:给定初始空洞,每个元素被分配一个包裹。有效的选项/值是:

  • side:哪边指定放置元件的腔的哪一侧; 顶部,右侧,底部或左侧之一。如果省略,该元件占据整个空腔。
  • sticky:nswe指定元素放置在其分配的宗地内的位置。
  • unit:0或1。如果设置为1,则将元素及其所有后代作为单个元素处理,以用于Widget.identify()等。它用于像滚动条大拇指一样的东西。
  • children:sublayout ...指定放置在元素内的元素列表。每个元素都是一个元组(或其他序列类型),其中第一个项目是布局名称,另一个是布局。

扫码关注云+社区

领取腾讯云代金券