Menu 触发Gtk+;悬停菜单栏

Menu 触发Gtk+;悬停菜单栏,menu,pygtk,gtk,Menu,Pygtk,Gtk,我已经在PyGtk+中编写了一个Gnome窗口切换小程序,它使用菜单项来表示桌面上运行的不同应用程序。我想做的一件事是,当我将鼠标悬停在菜单栏上时,激活光标下的菜单项。我可以连接到菜单栏上的“enternotify事件”,但我不知道在触发它时应该做什么 这就是我的问题,当我将鼠标悬停在菜单栏的父项上时,如何打开菜单栏的子菜单?您可以在输入位置模拟单击事件。您可以在输入位置模拟单击事件。这应该可以做到: event = gtk.gdk.Event(gtk.gdk.BUTTON_RELEASE) e

我已经在PyGtk+中编写了一个Gnome窗口切换小程序,它使用菜单项来表示桌面上运行的不同应用程序。我想做的一件事是,当我将鼠标悬停在菜单栏上时,激活光标下的菜单项。我可以连接到菜单栏上的“enternotify事件”,但我不知道在触发它时应该做什么


这就是我的问题,当我将鼠标悬停在菜单栏的父项上时,如何打开菜单栏的子菜单?

您可以在输入位置模拟单击事件。

您可以在输入位置模拟单击事件。

这应该可以做到:

event = gtk.gdk.Event(gtk.gdk.BUTTON_RELEASE)
event.window = enter_event.window
event.x = enter_event.x
event.y = enter_event.y
event.button = 1
menu.emit('button_release_event', event)
它将创建一个新的事件对象,使用您的
enter notify event
中的
enter_event
设置它,然后在
菜单上发出它

您可以在此处阅读有关活动的更多信息:

这应该可以做到:

event = gtk.gdk.Event(gtk.gdk.BUTTON_RELEASE)
event.window = enter_event.window
event.x = enter_event.x
event.y = enter_event.y
event.button = 1
menu.emit('button_release_event', event)
它将创建一个新的事件对象,使用您的
enter notify event
中的
enter_event
设置它,然后在
菜单上发出它

您可以在此处阅读有关活动的更多信息:

你知道怎么做吗?我一直在寻找,但我想不出来(我对Gtk+相当陌生)。你知道怎么做吗?我一直在寻找,但我想不出来(我对Gtk+相当陌生)。这几乎可以奏效。我不确定是否应该在gtk.MenuBar、gtk.MenuItem或gtk.Menu上查看进入/离开事件。在菜单栏中使用上述代码没有任何作用,替换为BUTTON_PRESS和BUTTON PRESS事件有效,但在将光标移开和移开菜单几次后会导致segfault。注释掉button press事件的创建会停止崩溃,因此它是导致segfault的事件的创建。忽略这一点,崩溃是由我在leave notify事件中调用MenuBar.cancel()引起的。我会努力解决的,谢谢!这几乎奏效了。我不确定是否应该在gtk.MenuBar、gtk.MenuItem或gtk.Menu上查看进入/离开事件。在菜单栏中使用上述代码没有任何作用,替换为BUTTON_PRESS和BUTTON PRESS事件有效,但在将光标移开和移开菜单几次后会导致segfault。注释掉button press事件的创建会停止崩溃,因此它是导致segfault的事件的创建。忽略这一点,崩溃是由我在leave notify事件中调用MenuBar.cancel()引起的。我会努力解决的,谢谢!