我只是想截取一个框架上的鼠标点击,尝试此代码但不工作不知道为什么,我试图点击所有鼠标按钮,但没有回应:
__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()
所以为什么它不知道它不起作用?
答案 0 :(得分:4)
button-press-event上的文档说:
要接收此信号,与窗口小部件关联的GdkWindow需要 启用GDK_BUTTON_PRESS_MASK掩码。
然后导入Gdk,然后执行
win.set_events (Gdk.EventMask.BUTTON_PRESS_MASK)
这应该让你的榜样有效。
在文中你还提到了一个框架。如果您计划使用GtkFrame执行相同的操作,请注意只有具有自己窗口的窗口小部件才能接收事件,而像Frame这样的容器通常会而不是有窗口。您可能必须将框架放在可以接收事件的EventBox中。