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
资源匹配的顺序
.
优先于*
实例
优于类别
(如 panicButton 优于 Button)多层深入
优于浅层
(如 *Button*font 优于 *font)- 如果两个规则的级别数相同, 列表中
较早的名称
, 优于较晚的名称
(xparrot*font 优于 *Button*font)
本作品采用《CC 协议》,转载必须注明作者和本文链接