When you are creating a widget, and you don't specify a value for some option, and two or more resource specifications apply to that option, the most specific one applies.
For example, suppose your options file has these two lines:
*background: LimeGreen *Listbox*background: FloralWhite
Both specifications apply to the background
option in a Listbox
widget, but the
second one is more specific, so it will win.
In general, the names in a resource specification are a
sequence
n1
,
n2
,
n3
,
..., o
where each
ni
is a
class or instance name. The class names are ordered from
the highest to the lowest level, and
o
is the name of an option.
However, when Tkinter is creating a widget, all it has is the class name and the instance name of that widget.
Here are the precedence rules for resource specifications:
The name of the option must match the
o
part of the
.
For example, if the rule is
option-pattern
xparrot*indicatoron: 0
this will match only options named indicatoron
.
The tight-binding operator (.
) is more
specific than the loose-binding operator (*
). For example, a line for *Button.font
is more specific than a line
for *Button*font
.
References to instances are more specific than
references to classes. For example, if you have a
button whose instance name is panicButton
, a rule for *panicButton*font
is more specific than a
rule for *Button*font
.
A rule with more levels is more specific. For
example, a rule for *Button*font
is
more specific than a rule for *font
.
If two rules have same number of levels, names
earlier in the list are more specific than later
names. For example, a rule for xparrot*font
is more specific than a rule
for *Button*font
.