Когда вы создаете виджет и не указываете значение некоторой опции, а к этой опции применимы две или более спецификаций ресурсов, применяется наиболее конкретная.
Например, предположим, что в вашем файле опций есть следующие две строки:
*background: LimeGreen
*Listbox*background: FloralWhite
Обе спецификации применяются к опции background в виджете Listbox, но вторая более точна, поэтому она выигрывает.
В общем случае имена в спецификации ресурса представляют собой последовательность n1, n2, n3, ..., o, где каждое ni - это имя класса или экземпляра. Имена классов упорядочены от самого высокого до самого низкого уровня, а o - это имя опции.
Однако когда Tkinter создает виджет, все, что у него есть, - это имя класса и имя экземпляра этого виджета.
Вот правила приоритета для спецификаций ресурсов:
Имя опции должно соответствовать части o шаблона option-pattern. Например, если правило сформулировано следующим образом
xparrot*indicatoron: 0
это будет соответствовать только опциям с именем indicatoron.
Оператор жесткой привязки (.) является более конкретным, чем оператор свободной привязки (*). Например, строка для *Button.font является более конкретной, чем строка для *Button*font.
Ссылки на экземпляры более конкретны, чем ссылки на классы. Например, если у вас есть кнопка, имя экземпляра которой panicButton, правило для *panicButton*font будет более конкретным, чем правило для *Button*font.
Правило с большим количеством уровней является более конкретным. Например, правило для *Button*font является более конкретным, чем правило для *font.
Если два правила имеют одинаковое количество уровней, то имена, расположенные раньше в списке, являются более конкретными, чем более поздние имена. Например, правило для xparrot*font является более конкретным, чем правило для *Button*font.