Ver Mensaje Individual
  #3 (permalink)  
Antiguo 28/06/2013, 05:54
maestrodenada
 
Fecha de Ingreso: abril-2007
Mensajes: 8
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: pygtk desactivar item de un menu

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
  1. ...
  2.          self.menu_archivo = gtk.Menu()
  3.          self.m_items = (("Nuevo", self.nuevo_doc),\
  4.                 ("Abrir", self.abrir_doc),\
  5.                 ("Guardar", self.guardar_doc),\
  6.                 ("Guardar como", self.guardar_como_doc),\
  7.                 ("Cerrar Documento", self.cerrar_doc),\
  8.                 ("Cerrar Todos", self.cerrar_all),\
  9.                 ("Salir", self.salir))
  10.         for etiqueta, funcion in self.m_items:
  11.             m_item = gtk.MenuItem(etiqueta)
  12.             self.menu_archivo.append(m_item)
  13.             m_item.connect("activate", funcion)
  14.             m_item.show()
  15.         self.mm = gtk.MenuItem("OTRO")
  16.         self.menu_archivo.append(self.mm)
  17.         self.mm.connect("activate", self.holamm)
  18.         self.mm.show()...

En la función holamm...
Código Python:
Ver original
  1. def holamm(self, widget):
  2.         if self.mm.get_sensitive():
  3.             self.mm.set_sensitive(False)
  4.         else:
  5.             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 original
  1. def nuevo_doc(self, widget):
  2.         print "Nuevo"
  3.         for item in self.menu_archivo:
  4.             menu = item.get_child()
  5.  
  6.             if menu.get_text() == "Nuevo":
  7.                 if menu.get_sensitive():
  8.                     menu.set_sensitive(False)
  9.                 else:
  10.                     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)

Última edición por maestrodenada; 28/06/2013 a las 06:01