GTK 弹出菜单未出现在鼠标位置



我正在尝试使用处理程序在单击按钮时创建 Gtk 弹出菜单,如下所示:

def code_clicked(self,widget,event):
    newmenu=Gtk.Menu()
    newitem=Gtk.MenuItem('hello')
    newmenu.append(newitem)
    newitem1=Gtk.MenuItem('goodbye')
    newmenu.append(newitem1)
    newmenu.show_all()
    newmenu.popup(None,None,None,None,event.button,event.time)
    return True

菜单永远不会显示。理论上,弹出窗口中的第三个参数 func 将位置设置为光标位置(如果设置为 Null)。我认为问题就在那里,因为如果我将 func 设置为 lambda x,y: (event.x,event.y,True) ,它会在我的光标上方约 100 像素处显示弹出菜单。

我想找到一些方法在我的光标处弹出此菜单。任何帮助将不胜感激!

您需要窗口的根位置。所以

        menu.popup(None, None, 
                   lambda menu, data: (event.get_root_coords()[0],
                                       event.get_root_coords()[1], True),
                   None, event.button, event.time)

应将弹出窗口放在正确的位置。在这里工作。

至于乔恩·布莱克的回答,在 GTK3 中,问题是正确的,请参阅 http://developer.gnome.org/gtk3/3.4/GtkMenu.html#gtk-menu-popup 弃用的 pygtk 绑定只能像您描述的那样工作

您将event.time作为数据参数传递,该参数又传递给 func 以确定菜单位置。将调用更改为以下内容应该可以解决此问题:

newmenu.popup(None, None, None, event.button, event.time)

最新更新