当前位置:   article > 正文

【Tkinter系列14/45】 ttk部件库和原理_tkinter ttk

tkinter ttk

28.  ttk:主题小部件

        从 Tk 8.5 开始,ttk模块变得可用。该模块取代了大部分(但不是全部)原始Tkinter 机制。使用此模块可以获得以下优势:

  • 特定于平台的外观。在 Tk 8.5 之前的版本中,对 Tk 应用程序最常见的抱怨之一是它们不符合各个平台的风格。

    ttk 模块允许您以通用方式编写应用程序,但您的应用程序可以在 Windows 下看起来像 Windows 应用程序,在 MacOS 下看起来像 MacOS 应用程序,等等,而无需对程序进行任何更改。

    每个可能的不同外观都由一个命名的ttk 主题 表示 。例如, 主题为您提供前面部分中描述的 原始Tkinterclassic小部件的外观。

  • 特定于状态的小部件行为的简化和概括。在基本的 Tkinter世界中,有很多小部件选项,用于指定小部件根据各种条件应如何外观或表现。

    例如,tk.Button小部件有几个不同的选项来控制前景色(文本)颜色。

    • activeforeground当光标位于按钮上方时,应用颜色选项 。

    • disabledforeground当小部件被禁用时使用 该颜色。

    • foreground 当其他条件不适用时, 小部件将具有颜色。

    ttk 模块将许多这些特殊情况折叠成一个简单的两部分系统:

    • 每个小部件都有许多不同的状态,每个状态都可以独立于其他状态打开或关闭。状态的示例有:disabledactivefocus

    • 您可以设置一个样式映射,指定某些选项将根据某些状态或小部件状态的某些组合设置为某些值。

要使用ttk,您需要了解这些事情。

28.1 导入ttk

有多种方法可以导入ttk模块。

  • 如果您希望Tkinterttk的所有小部件和其他功能都位于全局命名空间中,请使用以下形式的导入:

    1. from Tkinter import *
    2. from ttk import *

    按此顺序执行这两个导入非常重要,以便ttk中的所有小部件类型替换Tkinter中的等效小部件。例如,您的所有 Button小部件都将来自ttk 而不是Tkinter

  • 在更复杂的应用程序中,您使用多个导入模块,如果您实行 安全的命名空间卫生:使用“ ”语法导入所有模块,则可以极大地提高代码的可读性。这只需要多输入一些内容,但它有一个很大的优点,即您可以查看对某些内容的引用并知道它来自哪里。 import modulename

    我们推荐这种导入方式:

    import ttk

    因此,在此导入之后,ttk.Label是 Label小部件构造函数,ttk.Button是 a Button,等等。

    如果您需要引用Tkinter模块中的项目,它可以作为ttk.Tkinter. 例如,“东北”的锚定代码是ttk.Tkinter.NE

    您可以通过以下方式单独导入Tkinter

    import Tkinter as tk

    通过这种形式导入后,“东北”的代码为tk.NE

28.2. ttk部件集

        ttk 模块包含大多数标准Tkinter小部件的不同版本和一些新小部件。这些小部件替换了Tkinter中的同名 小部件:

这些小部件是新的,并且特定于ttk

29.  ttk.Button

这个小部件是第 7 节“小部件”ttk版本。创建ttk小部件: Button.Button

 w = ttk.Button(parent, option=value, ...)

以下是ttk小部件 的选项.Button 。将它们与第 7 节“小部件”中讨论的Tkinter版本进行比较。 Button

表 35.  ttk.Button选项

class_小部件类名称。这可以在创建小部件时指定,但以后不能更改。有关小部件类的说明,请参阅第 27 节“标准化外观”
command按下按钮时调用的函数。
compound

如果同时提供imagetext选项,则该compound 选项指定图像相对于文本的位置。该值可以是tk.TOP (文本上方的图像)、tk.BOTTOM(文本下方的图像)、tk.LEFT(文本左侧的图像)或tk.RIGHT(文本右侧的图像)。

当您提供imagetext选项但未指定compound选项时,将显示图像但不会显示文本。

cursor当鼠标悬停在按钮上时出现的光标;请参见第 5.8 节“游标”
image出现在按钮上的图像;请参见第 5.9 节“图像”
style渲染此按钮时使用的样式;请参阅 第 49 节,“使用和自定义ttk样式”
takefocus默认情况下,焦点遍历中会包含一个ttk ;.Button请参见第 53 节“焦点:路由键盘输入”。要从焦点遍历中删除小部件,请使用takefocus=False
text显示在按钮上的文本,作为字符串。
textvariable控制按钮上显示的文本的变量;请参见第 52 节“控制变量:小部件背后的值”
underline如果此选项具有非负值n ,则位置n的字符下方将出现下划线。
width如果标签是文本,则此选项指定按钮上文本区域的绝对宽度(以字符数表示);实际宽度是该数字乘以当前字体中字符的平均宽度。对于图像标签,此选项将被忽略。该选项也可以按样式进行配置。

ttk构造函数不支持Tkinter Button小部件 的这些选项: .Button

表 36.  ttk中没有的Tkinter Button选项 .Button

activebackground使用样式图来控制background选项;请参见第 50.2 节,“ ttk样式图:动态外观变化”
activeforeground使用样式图来控制foreground选项。
anchor

使用样式配置此选项;请参阅第 49 节,“使用和自定义ttk样式”。当该选项分配额外的水平空间时,使用此选项指定文本的位置width

例如,如果您 在显示文本和图像的按钮上指定选项width=20和,以及指定 (east) 的样式,则图像将位于二十个字符空间的右端,而文本恰好位于它的左边。 compound=tk.RIGHTanchor=tk.E

当按钮显示图像但不显示文本时,此选项将被忽略。

background或者bgbackground使用样式 配置选项。bg不支持缩写 。
bitmap不支持。
borderwidth或者bdborderwidth使用样式 配置选项。bd不支持缩写 。
cursor当鼠标悬停在复选按钮上时出现的光标;请参见第 5.8 节“游标”
default不支持; 请参见第 50.2 节,“ ttk样式图:动态外观变化”
disabledforeground使用样式图作为foreground 选项;请参见第 50.2 节,“ ttk样式图:动态外观变化”
font使用样式配置此选项。
foreground或者fg使用样式配置此选项。
height不支持。
highlightbackground要控制按钮没有焦点时焦点突出显示的颜色,请使用样式图来控制选项highlightcolor;请参见第 50.2 节,“ ttk样式图:动态外观变化”
highlightcolor您可以通过在样式中设置此选项来指定默认焦点突出显示颜色。您还可以使用样式图控制焦点突出显示颜色。
highlightthickness使用样式配置此选项。此选项可能不适用于所有主题。
justify如果text包含换行符 ( '\n') 字符,则文本将在按钮上占据多行。该justify选项控制每条线的水平定位方式。使用样式配置此选项;对于左对齐、居中或右对齐的行, 值可以是tk.LEFTtk.CENTER、 或。tk.RIGHT
overrelief使用样式图来控制relief选项;请参见第 50.2 节,“ ttk样式图:动态外观变化”
padx不支持。
pady不支持。
relief使用样式配置此选项;请参阅第 49 节,“使用和自定义ttk样式”
repeatdelay不支持。
repeatinterval不支持。
statettk中,没有具有此名称的选项。国家机制已普遍化;请参见第 50.2 节,“ ttk样式图:动态外观变化”
wraplength如果您使用将此选项设置为某些尺寸的 样式,则将text被切成不超过该尺寸的片段。

        ttk 上的方法包括第 46 节“所有ttk小部件通用的方法”.Button中描述的所有方法,以及:

.invoke()

        调用按钮的command回调,并返回该函数返回的内容。如果按钮被禁用或没有回调,则无效。

ttk小部件不支持 .flash()的 方法。 Tkinter.Button.Button

 29. ttk.Button (anzeljg.github.io)

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
  

闽ICP备14008679号