2014-02-22 45 views
1

我只是想攔截鼠標點擊的框架上攔截鼠標點擊,嘗試這種代碼,但不工作,不知道爲什麼,我試圖與點擊鼠標的所有按鈕,但沒有任何反應:gtk3 +上框架

__author__ = 'karim' 

from gi.repository import Gtk 


def tata(event, data): 
    print('tata') 

win = Gtk.Window() 
win.set_title('test') 
win.connect('delete-event', Gtk.main_quit) 
win.connect('button-press-event', tata) 
win.show_all() 

Gtk.main() 

但是當我試圖綁定進入-通知事件已經工作過,當我的鼠標進入 贏得區域,控制檯顯示消息塔塔

__author__ = 'karim' 

from gi.repository import Gtk 


def tata(event, data): 
    print('tata') 

win = Gtk.Window() 
win.set_title('test') 
win.connect('delete-event', Gtk.main_quit) 
win.connect('enter-notify-event', tata) 
win.show_all() 

Gtk.main() 

爲什麼它不知道它不工作?上button-press-event

+0

看看這個問題。可能是事件掩碼丟失http://askubuntu.com/questions/157290/how-to-draw-on-mouse-click-in-gtk-drawingarea-using-pygi – deinonychusaur

回答

4

文件說:

要接收此信號,相關的插件的GdkWindow需要 啓用GDK_BUTTON_PRESS_MASK面具。

所以導入GDK以及,然後做

win.set_events (Gdk.EventMask.BUTTON_PRESS_MASK) 

這應該使你的榜樣工作。

在文中您還提到了一個框架。如果你打算用GtkFrame做同樣的事情,注意只有窗口小部件可以接收事件,並且像Frame這樣的容器通常做而不是有一個窗口。您可能必須將框架放入可以接收事件的EventBox中。