标签不会触发鼠标事件

mhi*_*tza 3 gtk pygtk

在pygtk引用中,它声明每个Gtk.Widget事件都有事件enter-event-notify,但是对于我的测试代码,事件永远不会为Label小部件触发(与其他人一起工作).

有什么我应该做的不同吗?

import pygtk
pygtk.require('2.0')
import gtk

class LabelTest:

    def delete_event(self, widget, event, data=None):
        return False

    def destroy(self, widget, data=None):
        gtk.main_quit()

    def __init__(self):
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)

        self.window.connect("delete_event", self.delete_event)
        self.window.connect("destroy", self.destroy)
        self.window.set_border_width(10)

        self.label = gtk.Label("A label")

        # question section
        def labelMouseOver(w, data=None):
          print "mouse over"

        self.label.connect('enter-notify-event', labelMouseOver, None)
        # /question section

        self.window.add(self.label)
        self.label.show()
        self.window.show()

    def main(self):
        gtk.main()

if __name__ == "__main__":
    test = LabelTest()
    test.main()
Run Code Online (Sandbox Code Playgroud)

ase*_*max 9

出于性能原因,某些小部件不拥有自己的X窗口,因为它们大多是装饰性的,通常不需要处理X事件信号.你可以在这里找到完整的清单.

在这些情况下,建议使用GtkEventBox来封装无窗口小部件(EventBox是专门为此目标构建的).