GTK popup menu not appearing at mouse position

gtk, menu, python

Solution

You need the root position of the window. So

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

should put the popup at correct position. Works here.

As to answer of Jon Black, in GTK3, the question is correct, see http://developer.gnome.org/gtk3/3.4/GtkMenu.html#gtk-menu-popup The deprecate pygtk bindings only work like you describe

Problem

I'm trying to create a Gtk popup menu on button click using a handler as seen below: ``` 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 ``` The menu never appears. Theoretically, the third argument in popup, func, sets the position to the cursor position if set to Null. I think the problem is there since if I set func to `lambda x,y: (event.x,event.y,True)`, it shows the popup menu some 100 pixels above my cursor. I'd like to find some way to popup this menu at my cursor. Any help would be appreciated!

Original source