Каждая строка в файле опций определяет значение одной или нескольких опций в одном или нескольких приложениях и имеет один из этих форматов:
app option-pattern: value
option-pattern: value
Первая форма задает опции только в том случае, если имя приложения совпадает с app; вторая форма задает опции для всех приложений.
Например, если ваше приложение называется xparrot, то строка вида
xparrot*background: LimeGreen
устанавливает все опции background в приложении xparrot в лаймово-зеленый цвет. (Используйте опцию -name в командной строке при запуске приложения, чтобы задать имя 'xparrot').
Часть option-pattern имеет следующий синтаксис:
{{*|.}name}...option
То есть, каждый option-pattern - это список из нуля или более имен, перед каждым из которых стоит звездочка или точка. Последнее имя в серии - это имя опции, которую вы устанавливаете. Каждое из этих имен может быть либо:
именем класса виджета (с большой буквы), либо
именем экземпляра (маленькими буквами).
Принцип работы шаблонов опций немного сложен. Давайте начнем с простого примера:
*font: times 24
Эта строка говорит, что все опции font должны по умолчанию иметь 24-строчный шрифт Times. Символ * называется символом свободной привязки и означает, что данный шаблон опций применяется к любой опции font в любом месте любого приложения. Сравните с этим примером:
*Listbox.font: lucidatypewriter 14
Точка между Listbox и font называется символом жесткой привязки и означает, что это правило применяется только к опциям font для виджетов класса Listbox.
В качестве другого примера предположим, что в вашем приложении xparrot есть экземпляры виджетов класса Jukebox. Чтобы установить цвет фона по умолчанию для всех виджетов класса Jukebox, вы можете поместить в файл опций строку следующего вида:
xparrot*Jukebox*background: PapayaWhip
Символ свободной привязки (*) между Jukebox и background делает это правило применимым к любой опции background любого виджета внутри Jukebox. Сравните с этой строкой опций:
xparrot*Jukebox.background: NavajoWhite
Это правило будет применяться к фрейму, составляющему сам виджет Jukebox, но из-за символа жесткой привязки оно не будет применяться к виджетам, находящимся внутри виджета Jukebox.
В следующем разделе мы поговорим о том, как Tkinter определяет, какое именно значение опции использовать, если применяется несколько строк спецификации ресурсов.