Es un ejemplo muy sencillo de como crear un indicador, y asociarle un menú. En el ejemplo se crean 5 elementos en el menú. Uno para lanzar una aplicación externa (gedit en este caso), para salir, y otros tres que son un ejemplo de como crear un elemento de menú de tipo radio, check o imagen.
#! /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()
No hay comentarios:
Publicar un comentario