使用選項資料庫來設定部件預設選項值, 另外可以使用預先設定檔案
.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 協議》,轉載必須註明作者和本文連結