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