Modificando / actualizando dinámicamente los contenidos del menú en PyGTK

Estoy intentando implementar una lista de elementos abiertos recientemente en el menú de una GUI que estoy escribiendo con PyGTK. Inicializo el menú así:

self.filemenu = gtk.Menu() self.init_file_menu() self.fileitem = gtk.MenuItem("File") self.fileitem.set_submenu(self.filemenu) menubar = gtk.MenuBar() menubar.append(self.fileitem) outerframe.pack_start(menubar, False, False) def init_file_menu(self): for widget in self.filemenu.get_children(): self.filemenu.remove(widget) openitem = gtk.MenuItem("Open") self.filemenu.append(openitem) openitem.connect("activate", self.open_file) self.filemenu.append(gtk.SeparatorMenuItem()) for recentitem in self.settings['recentfiles']: item = gtk.MenuItem(os.path.basename(recentitem)) self.filemenu.append(item) item.connect("activate", self.open_file, recentitem) self.filemenu.show() 

self.settings [‘recentitems’] es un deque que se modifica al abrir un archivo; Entonces se llama nuevamente a init_file_menu. Mi objective es vaciar el menú, luego repoblarlo con los elementos correctos en el orden correcto. Este código funciona bien al rellenar el menú al inicio. Pero por alguna razón, mientras que las llamadas a Menú, eliminar todo funciona bien y vaciar el menú, las llamadas adjuntas no vuelven a agregarle los elementos y permanece vacío. Si llamo a su método get_children, veo que están todos allí internamente, pero la interfaz no se ha actualizado para reflejar esto. ¿Cómo actualizo el menú mostrado y hago que la lista de elementos recientes funcione como se espera?

También aceptaría instrucciones sobre cómo usar el widget RecentChooserMenu si eso es lo que estoy buscando.

Ya que gtk.Menu es un contenedor, necesita .show cada elemento después de agregarlo al menú (ya que no desea llamar al menu.show_all() atajo que muestra el menú en sí), por lo que hace item.show() justo después de menu.append(item)