在PyGTK应用程序中,我想检测鼠标指针何时离开我的顶级窗口。
window = gtk.Window(gtk.WINDOW_TOPLEVEL)
...
window.connect("leave-notify-event", window_exit, "")
然而,只有在鼠标进入窗口内的窗口小部件时才触发回调,而不是在它离开顶级窗口时触发?
答案 0 :(得分:4)
你的问题是,当指针进入下方的小部件时,在GTK中技术上也离开了窗口,这就是你遇到的奇怪行为的原因。 (顺便说一句。我对python没有任何经验,但我会尽量让它变得可以理解)
你的回调函数头应该是这样的:
def window_exit(widget, event, user_data)
事件非常重要,因为它的变量'event.detail'告诉我们究竟发生了什么样的离开事件。在你的情况下,你想测试它是否等于'gtk.gdk.NOTIFY_NONLINEAR',因为这意味着指针已经“真正”离开了窗口。
所以,你应该放点像
这样的东西if (event.detail != gtk.gdk.NOTIFY_NONLINEAR) { return; }
位于回调函数的顶部。 (语法可能不完全正确,因为我不知道python)