Я не могу воспроизвести проблему, о которой вы заявляете. Когда мой указатель мыши входит в кнопку (даже из другого окна, которое частично закрывает Tk GUI, поэтому указатель никогда не касается кадра), я получаю событие как для кадра, так и для кнопки.
Используя ваш пример кода, изменение рельефа не видно, потому что рамка имеет ширину границы по умолчанию, равную 0. Поэтому вам нужно будет указать ширину границы 2 или около того.
Вот полный сценарий, который работает для меня как вы, кажется, хотите:
set Frame [frame .f -relief flat -borderwidth 2]
set Button [button .f.b1]
grid $Frame
grid $Button
# When the mouse hovers over Frame
bind $Frame <Enter> [list $Frame configure -relief groove]
# When it exits
bind $Frame <Leave> [list $Frame configure -relief flat]
Событие действительно не передается фрейму. Если вы хотите, чтобы это тоже произошло, вы можете добавить фрейм в теги привязки кнопки:
bindtags $Button [linsert [bindtags $Button] 1 $Frame]
Это заставит любое событие на кнопке также запускать привязки кадров, если это специально не предотвращается привязками кнопок .
Когда это установлено, события и кадра фактически запускаются дважды при прямом нажатии кнопки. Один раз из-за события в самом кадре, а в другой раз из-за тегов привязки кнопки.