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