【问题标题】:Triggering a Gtk+ menu bar on hover悬停时触发 Gtk+ 菜单栏
【发布时间】:2010-04-28 00:07:09
【问题描述】:

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

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

【问题讨论】:

    标签: menu pygtk gtk


    【解决方案1】:

    这应该可以解决问题:

    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 设置它,然后在您的menu 上发出它。

    您可以在此处阅读有关活动的更多信息:
    http://www.pygtk.org/docs/pygtk/class-gdkevent.html

    【讨论】:

    • 几乎有效。我不确定是否应该关注 gtk.MenuBar、gtk.MenuItem 或 gtk.Menu 上的进入/离开事件。将上面的代码与 MenuBar 一起使用不会做任何事情,替换为 BUTTON_PRESS 和 button-press-event 有效,但是在将光标移开并移到菜单上几次后会导致段错误。注释掉按钮按下事件的创建会停止崩溃,因此它是导致段错误的事件的创建。
    • 忽略,崩溃是我在离开通知事件中调用 MenuBar.cancel() 引起的。我会尝试解决这个问题,谢谢!
    【解决方案2】:

    可以在进入的位置模拟点击事件。

    【讨论】:

    • 你知道怎么做吗?我一直在寻找,但我无法弄清楚(我对 Gtk+ 相当陌生)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-23
    • 1970-01-01
    • 2022-08-05
    • 2018-05-12
    • 1970-01-01
    • 2012-09-19
    相关资源
    最近更新 更多