Ваша проблема в том, что когда указатель входит в подчиненный виджет, в GTK он также технически покидает окно, что является причиной странного поведения, которое вы испытываете.
(Кстати. У меня нет абсолютно никакого опыта работы с python, но я постараюсь сделать его понятным)
Ваша функция обратного вызова должна выглядеть примерно так:
def window_exit(widget, event, user_data)
Событие очень важно, потому что его переменная 'event.detail' точно сообщает нам, какой тип события произошел. В вашем случае вы хотите проверить, равно ли оно «gtk.gdk.NOTIFY_NONLINEAR», потому что это означает, что указатель «действительно» покинул окно.
Итак, вы, вероятно, должны поставить что-то вроде
if (event.detail != gtk.gdk.NOTIFY_NONLINEAR) { return; }
в верхней части функции обратного вызова. (Синтаксис может быть не совсем правильным, так как я не знаю Python)