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
.