Hay un ejemplo para hacer esto mismo que se encuentra en http://www.pygtk.org/pygtk2tutorial/sec-ManualMenuExample.html
Muestra cómo crear un menú adjuntarlo a una barra de menú y también escuchar para un evento de botón del ratón clic y móvil el mismo menú que fue creado.
Creo que esto es lo que buscas.
EDIT: (añadió una explicación más detallada para mostrar cómo responder a eventos de botón único derecho del ratón)
de resumir.
Crea un widget para escuchar los eventos del mouse en. En este caso, es un botón.
button = gtk.Button("A Button")
Crear un menú
menu = gtk.Menu()
llenarlo con elementos de menú
menu_item = gtk.MenuItem("A menu item")
menu.append(menu_item)
menu_item.show()
Haga el widget para escuchar eventos de prensa ratón, adjuntando el menú a la misma.
button.connect_object("event", self.button_press, menu)
A continuación, defina el método que maneja estos eventos. Como se indica en el ejemplo en el enlace, el widget que se pasa a este método es el menú que desea que aparezca, no el widget que está escuchando estos eventos.
def button_press(self, widget, event):
if event.type == gtk.gdk.BUTTON_PRESS and event.button == 3:
#make widget popup
widget.popup(None, None, None, event.button, event.time)
pass
Usted verá que la sentencia if comprueba para ver si se ha pulsado el botón, si es verdad que se encargarán de verificar para ver cuál de los botones se presionó. El botón evento.total es un valor entero que representa el botón del mouse que se presionó. Entonces 1 es el botón izquierdo, 2 es el medio y 3 es el botón derecho del mouse. Al verificar si el evento.botón es 3, solo está respondiendo a los eventos de la prensa del mouse para el botón derecho del mouse.
En primer lugar, debe leer sobre cómo GTK utiliza eventos. Comience con hacer clic derecho para hacer algo, luego lea sobre cómo hacer menús contextuales. Nunca he usado PyGTK o GTK, pero probablemente haya un widget para eso. – JAB