2016-06-09 3 views
0

В принципе, мне нужно добиться этого, чтобы обойти ошибку, которая не идентифицирует мышь над верхней панелью как находящуюся внутри окна. Как вы можете видеть с помощью приведенного ниже кода, если вы поместите мышь на верхнюю панель, окно станет полупрозрачным, как если бы мышь не была там (mouse_enter() не вызывается).motion-notify-event not triggering

Ну, так я думал, что единственный способ сделать это - получить координаты и положение мыши и работать оттуда в функции mouse_move(), проблема в том, что motion-notify-event не срабатывает.

import gtk 

def mouse_move(window, event): 
    print(win.get_pointer()) 
    win.set_opacity(1) 

def mouse_enter(window, event): 
    win.set_opacity(1) 

def mouse_leave(window, event): 
    win.set_opacity(0.5) 

win = gtk.Window() 
win.set_opacity(0.5) 
win.set_size_request(600, 400) 

win.connect('enter-notify-event', mouse_enter) 
win.connect('leave-notify-event', mouse_leave) 
win.connect('motion-notify-event', mouse_move) 
win.connect('destroy', gtk.main_quit) 
win.show_all() 
gtk.main() 

ответ

2

Вы, вероятно, нужно вызывать win.add_events() с эквивалентом Python из GDK_POINTER_MOTION_MASK.

+0

Sintaticly Как я могу это сделать? я сделал 'win.add_events (POINTER_MOTION_MASK)' и выбрал 'NameError: name 'GDK_POINTER_MOTION_MASK' не определен' – Miguel

+1

Я бы не знал; вам нужно будет найти ссылку PyGTK. Сожалею. – andlabs

+0

Спасибо, хотя @andlabs – Miguel