Cierto, si creo una variable del tipo gtk.MenuItem funciona, mi problema estaba que pretendo hacer menús dinámicos en tiempo de ejecución, según plugin instalados, así que hice pruebas definiendo el menú tal que así:
Código Python:
Ver original...
self.menu_archivo = gtk.Menu()
self.m_items = (("Nuevo", self.nuevo_doc),\
("Abrir", self.abrir_doc),\
("Guardar", self.guardar_doc),\
("Guardar como", self.guardar_como_doc),\
("Cerrar Documento", self.cerrar_doc),\
("Cerrar Todos", self.cerrar_all),\
("Salir", self.salir))
for etiqueta, funcion in self.m_items:
m_item = gtk.MenuItem(etiqueta)
self.menu_archivo.append(m_item)
m_item.connect("activate", funcion)
m_item.show()
self.mm = gtk.MenuItem("OTRO")
self.menu_archivo.append(self.mm)
self.mm.connect("activate", self.holamm)
self.mm.show()...
En la función holamm...
Código Python:
Ver originaldef holamm(self, widget):
if self.mm.get_sensitive():
self.mm.set_sensitive(False)
else:
self.mm.set_sensitive(True)
... la instrucción del else nunca se ejecuta, porque set_sensitive funciona perfectamente.
Sin embargo, en la función
Código Python:
Ver originaldef nuevo_doc(self, widget):
print "Nuevo"
for item in self.menu_archivo:
menu = item.get_child()
if menu.get_text() == "Nuevo":
if menu.get_sensitive():
menu.set_sensitive(False)
else:
menu.set_sensitive(True)
... se alterna el color del texto.
Me he dado cuenta que el problema está en que item.get_child() devuelve un gtk.Accel... , e item es el gtk.Menuitem (que no tiene get_text)