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 に答える