Как правило, связывание с классом виджета сложно, поскольку оно затрагивает всех пользователей этого виджета, включая тех, которые находятся в коде библиотеки.Это не рекомендуется, по крайней мере, не с существующими классами виджетов.(Напротив, это очень хорошая идея, если вы создаете свой собственный класс виджетов.) Для обычного пользовательского кода лучше либо привязать имя виджета:
bind .frm.fgs_$name <B1-Motion> {puts "Scale: %W"}
, либо привязать кновый тег привязки и установите его:
# You're advised to begin custom binding tags with a lower-case letter
bind myScale <B1-Motion> {puts "Scale: %W"}
# Install after the instance-level bindings but before the class-level bindings
bindtags .frm.fgs_$name [linsert [bindtags .frm.fgs_$name] 1 myScale]
Ваша непосредственная проблема заключается в том, что ttk::scale
использует имя класса TScale
.Он также имеет существующую привязку <B1-Motion>
.