1

我注意到当一个事件框被添加到一个布局中时,一些事件被遗漏了,这并没有发生,例如将它添加到一个固定的(非常相似的小部件),我试图以这种方式恢复事件掩码但没有成功:

import pygtk
import gtk


def foo(widget, event):

    print event


pygtk.require('2.0')
window = gtk.Window(gtk.WINDOW_TOPLEVEL)
window.connect('destroy', lambda x: gtk.main_quit())

eventbox = gtk.EventBox()
eventbox.connect('button-press-event', foo)   # works
eventbox.connect('motion-notify-event', foo)  # fail
eventbox.set_events(
    gtk.gdk.BUTTON_MOTION_MASK|               # restoring missed masks
    gtk.gdk.BUTTON1_MOTION_MASK|
    gtk.gdk.BUTTON2_MOTION_MASK|
    gtk.gdk.BUTTON3_MOTION_MASK)

layout = gtk.Layout()
image = gtk.image_new_from_file('/home/me/picture.jpg')

layout.add(image)
eventbox.add(layout)
window.add(eventbox)

window.show_all()
gtk.main()

我应该如何恢复错过的事件/面具?

4

1 回答 1

1

您粘贴的代码对我来说很好。当我按下鼠标上的按钮 1 并在窗口上拖动时,它会生成运动事件并将其打印到终端。

我什至删除了eventbox.set_events(...)电话,它仍然有效。

所以有什么问题?

于 2010-04-09T03:01:14.280 回答