gtk3 +拦截鼠标点击框架

时间:2014-02-22 08:33:45

标签: python gtk pygtk 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()

但当我尝试绑定有效的 enter-notify-event 时,当我的鼠标进入 胜利区域,控制台向我显示消息 tata

__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()

所以为什么它不知道它不起作用?

1 个答案:

答案 0 :(得分:4)

button-press-event上的文档说:

  

要接收此信号,与窗口小部件关联的GdkWindow需要   启用GDK_BUTTON_PRESS_MASK掩码。

然后导入Gdk,然后执行

win.set_events (Gdk.EventMask.BUTTON_PRESS_MASK)

这应该让你的榜样有效。

在文中你还提到了一个框架。如果您计划使用GtkFrame执行相同的操作,请注意只有具有自己窗口的窗口小部件才能接收事件,而像Frame这样的容器通常会而不是有窗口。您可能必须将框架放在可以接收事件的EventBox中。