Tkinter (22) 标准化外观及选项资料库

使用选项资料库来设置部件预设选项值, 另外可以使用预先设置文件.XDefaults文件; 每一个部件有一个类别名称, 基本上等同类别构造器, 比如按钮为Button, 也可以自行命名; 另外一种名称就如同实例名, 预设的名称为没有意义的数值名. 所以每一个部件就会有一个类似继承的名称, 如Frame.Text.Button (在Frame 的Text 中的Button) 或 .mainFrame.messageText.panicButton (第一个点代表根窗口).

建立一个新的类及命名为 Jukebox

class Jukebox(tk.Frame):
    def __init__(self, master):
        '''Constructor for the Jukebox class'''
        tk.Frame.__init__(self, master, class_='Jukebox')
        self.__createWidgets()
        ...

建立一个按钮实例及命名 panicButton

    self.panic = tk.Button(self, name='panicButton', text='Panic', ...)

预先设置文件

文件中每一行指定一个或多个选项值, 其格式如下:

app option-pattern: value
option-pattern: value

第一行 设置应用名为 app 的选项
第二行 设置所有应用的选项

xparrot*background: LimeGreen

设置应用名 xparrot 中所有的 background 选项为 LimeGreen. (在命令行中使用 -name 来设置应用名)

option-pattern 的语法: {{*|.}name}...option

{ } 代表可有可无, ... 代表可重复, option 代表选项名称, name 可以是大写的部件分类名或小写的实例名.

*font: times 24

所有字体的选项内定为 times 24, * 代表松散绑定符号, 指该设置可以适用到任何应用, 任意地方的任何字体选项.

*Listbox.font: lucidatypewriter 14

. 代表紧密绑定符号, 指该设置仅适用到在 Listbox 类中的所有部件的字体选项.

xparrot*Jukebox*background: PapayaWhip

在应用 xparrot 的 Jukebox 中的所有部件的所有预设 background 值为 PapayaWhip

xparrot*Jukebox.background: NavajoWhite

在应用 xparrot 的 Jukebox 的预设 background 值为 NavajoWhite

资源匹配规则

当部件创建时, 未指定某些选项值时, 如果有多项资源规范适用于该选项, 将采用最具体的一个. 下例中, 第二项比第一项, 更清楚指明 Listbox 的 background, 以 Listbox 而言, background 将采第二项

*background: LimeGreen
*Listbox*background: FloralWhite

资源匹配的顺序

  1. . 优先于 *
  2. 实例优于类别 (如 panicButton 优于 Button)
  3. 多层深入优于浅层 (如 *Button*font 优于 *font)
  4. 如果两个规则的级别数相同, 列表中较早的名称, 优于较晚的名称 (xparrot*font 优于 *Button*font)
本作品采用《CC 协议》,转载必须注明作者和本文链接
Jason Yang
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!