Python: Creando nuestros propios indicators

Navegando por el blog de jono bacon me encontre con un código de ejemplo y lo he adaptado. Es un ejemplo muy sencillo de como crear un indicador, y asociarle un menu. En el ejemplo creo 5 items en el menu. Uno para lanzar una aplicación externa (gedit en este caso), para salir, y otros tres que son un ejemplo de como crear un item de menu de tipo radio, check o imágen. No me explayo, porque en el código ya he puesto comentarios. Espero que os sirva para crear vuestras propias aplicaciones.

#! /usr/bin/python

#::::::::::::::::::::::::::::::::
# Ejemplo de uso de AppIndicator
#::::::::::::::::::::::::::::::::

import gobject
import gtk
import appindicator
import os

# Acciones que se ejecutan cuando pulse algun elemento del menu
def action1_clicked(widget,data=None):
    print "Lanzando gedit..."
    os.system("gedit &")

def action2_clicked(widget,data=None):
    print "Salir.."
    exit();

def quit(widget, data=None):
    gtk.main_quit()
    
# Codigo principal
if __name__ == "__main__":
    
    
    # Creo el indicador
    ind = appindicator.Indicator ("example-simple-client", "indicator-messages", appindicator.CATEGORY_APPLICATION_STATUS)
    ind.set_status (appindicator.STATUS_ACTIVE)
    ind.set_attention_icon ("indicator-messages-new")
    # Icono para el indicador
    ind.set_icon("distributor-logo")

    # creo un menu
    menu = gtk.Menu()

    # Empiezo a crear elementos para el menu
	
    # primer elemento (sera de tipo normal)
    # texto
    item = "Lanzar GEDIT..."
    # creo elemento de menu
    menu_item = gtk.MenuItem(item)
    # al pulsarlo le asocio que ejecute "action1"
    menu_item.connect("activate", action1_clicked)
    # Lo asocio al menu
    menu.append(menu_item)

    # Parecido para el item 2 del menu
    item2 = "Salir"
    menu_item2 = gtk.MenuItem(item2)
    # al pulsarlo le asocio que ejecute la "action2"
    menu_item2.connect("activate", action2_clicked)
    menu.append(menu_item2)

    # Aqui creo el item 3 pero sera de tipo check
    check = gtk.CheckMenuItem("Check Menu Item")
    menu.append(check)

    # Aqui creo el item 4 pero sera de tipo radio
    radio = gtk.RadioMenuItem(None, "Radio Menu Item")
    menu.append(radio)

    # Aqui creo el item 5 pero sera una imagen
    image = gtk.ImageMenuItem(gtk.STOCK_QUIT)
    image.connect("activate", quit)
    menu.append(image)
    
    # hago visibles los elementos del menu
    menu_item.show()
    menu_item2.show();    
    check.show();
    radio.show();
    image.show();
   
    # Asocio el menu al indicador
    ind.set_menu(menu)

    # Ejecuto el codigo principal
    gtk.main()

13 Respuestas to “Python: Creando nuestros propios indicators”


  1. 1 santiago diciembre 15, 2010 a las 12:46 am

    muchísimas gracias. justo lo estaba buscando.

    cambiando un poco de tema; hay alguna forma de poner widgets que no sean del tipo MenuItem en un menú? (ej. el control deslizable del indicador de volumen)

  2. 2 [Benja] diciembre 15, 2010 a las 12:48 am

    Genial, voy por los míos 😉

  3. 3 SnocK diciembre 15, 2010 a las 1:00 am

    Buenisimo , jue de una vez por todas me pongo aprender a programar en python.

  4. 4 Kurtins diciembre 15, 2010 a las 4:16 am

    ¿Se podrá hacer uno para jdownloader?

  5. 5 Son Link diciembre 15, 2010 a las 10:34 pm

    Esta bastante interesante.
    ¿Solo funciona en Gnome o es posible usarlo en otros paneles como el LXPanel?

  6. 7 andresmalo diciembre 15, 2010 a las 10:35 pm

    Me gustaría crear varios a mi modo (ver las carpetas una especie de explorador)

  7. 8 Alejandro M. diciembre 16, 2010 a las 4:46 am

    me acabas de dar una idea para crear un indicador de Lammp!!! gracias!!!!

  8. 9 Yeison Cardona enero 1, 2011 a las 7:11 pm

    Pero que interesante esta esto, ya tengo muchas ideas en la cabeza para implementarlo

  9. 10 5ki2o febrero 3, 2011 a las 12:08 pm

    Hola estoy empezando con python, y que mejor manera e¡de hacer un applet, lo llevo tiempo pensando, uno que me sirva para empezar/parar demonios/servicios, como apache, impresoras, bluetooth, virtualbox, etc

    me he puesto directamente con tu ejemplo y al intentar ejecutar me sale este error

    Traceback (most recent call last):
    File «applet.py», line 9, in
    import appindicator
    ImportError: No module named appindicator

    he intentado buscar «appindicator» con un updatedb y locate, whereis y aptitude, pero no encuentro nada. Pos si acaso tuviera que guardar el archivo en una carpeta en concreto o instalar alguna dependencia.

    Cualquier ayuda sería de muchisima utilidad.

    Gracias por adelantado, buen blog!!


  1. 1 Python: Creando nuestros propios indicators | Ayuda Linux Trackback en diciembre 15, 2010 a las 4:31 am
  2. 2 CPU Frequency Scaling ahora cuenta con su Indicator « Soft-Libre Trackback en diciembre 17, 2010 a las 10:15 pm
  3. 3 Top 5 (19-12-10) « El blog de Iyan Trackback en diciembre 19, 2010 a las 10:01 pm

Replica a SnocK Cancelar la respuesta







¿Es compatible tu equipo con Ubuntu?


( Muchos fondos de pantalla, aqui )

DESCARGATE SCIFI LIFE

365 Dias de Soledad
Me debes los sueños, las promesas y las noches rotas. Me debes la paz, la sonrisa y la esperanza robadas. Me debes la sangre, las lágrimas y el sudor vertido. Me debes las noches vacías, los abrazos anhelados. Me debes un beso de ajenjo de tu amarga boca.

The Ubuntu Counter Project - user number # 11961
Geo Visitors Map

Archivos

diciembre 2010
L M X J V S D
 12345
6789101112
13141516171819
20212223242526
2728293031  

Blog Stats

  • 31.397.361 hits