Foros del Web » Programando para Internet » Python »

Click izquierdo en StatusIcon de Gtk

Estas en el tema de Click izquierdo en StatusIcon de Gtk en el foro de Python en Foros del Web. Me estoy haciendo un programita para notificarme los correos de gmail para practicar un poco el Gtk, por ahora he conseguido hacerlo todo más o ...
  #1 (permalink)  
Antiguo 14/03/2013, 13:13
Avatar de Neldor  
Fecha de Ingreso: enero-2010
Mensajes: 52
Antigüedad: 14 años, 3 meses
Puntos: 1
Click izquierdo en StatusIcon de Gtk

Me estoy haciendo un programita para notificarme los correos de gmail para practicar un poco el Gtk, por ahora he conseguido hacerlo todo más o menos, solo tengo un pequeño problema (aparte de no tener ni pajolera idea de Gtk).

Tengo el icono en el systray que me despliega un popup con los correos no leidos al pulsar con el botón derecho con el evento "popup-menu", lo que quiero es poder abrir ese mismo popup con el botón derecho (y si acaso dejar el botón derecho para el about y quit).

Os dejo un resumen del código correspondiente.

Código Python:
Ver original
  1. class SystrayIconApp:
  2.     def __init__(self):
  3.         self.tray = gtk.StatusIcon()
  4.         self.tray.set_from_stock(gtk.STOCK_ABOUT)
  5.         self.tray.connect('popup-menu', self.show_menu)
  6.         self.tray.set_tooltip(('Sample tray app'))
  7.         self.menu=gtk.Menu()
  8.        
  9.    
  10.     def show_menu(self, icon, event_button, event_time):
  11.         self.menu=gtk.Menu()
  12.        
  13.         # Separator
  14.         sep=gtk.SeparatorMenuItem()
  15.         sep.show()
  16.         self.menu.append(sep)
  17.         # show about dialog
  18.         about = gtk.MenuItem("About")
  19.         about.show()
  20.         self.menu.append(about)
  21.         about.connect('activate', self.open_mail,"a")
  22.        
  23.         self.menu.popup(None, None, gtk.status_icon_position_menu, event_button, event_time, self.tray)

He probado a cambiar el evento "popup-menu" por activate pero para eso ya no me funciona el self.menu.popup() y no tengo ni idea de por qué podría sustituirlo para que se muestre.

Amaré hasta la muerte al que pueda ayudarme
  #2 (permalink)  
Antiguo 17/03/2013, 12:44
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Click izquierdo en StatusIcon de Gtk

De la documentación y el ejemplo que saque de aquí:

Código Python:
Ver original
  1. import gtk
  2.  
  3. class StatusIcon:
  4.     def __init__(self):
  5.         self.statusicon = gtk.StatusIcon()
  6.         self.statusicon.set_from_stock(gtk.STOCK_HOME)
  7.         self.statusicon.connect("popup-menu", self.right_click_event)
  8.         self.statusicon.connect("button-press-event", self.on_click)
  9.         self.statusicon.set_tooltip("StatusIcon Example")
  10.        
  11.         window = gtk.Window()
  12.         window.connect("destroy", lambda w: gtk.main_quit())
  13.         window.show_all()
  14.    
  15.     def on_click(self, icon, event):
  16.         # Click izquierdo
  17.         if event.button == 1:
  18.             print 'Click izquierdo'
  19.  
  20.     def right_click_event(self, icon, button, time):
  21.         menu = gtk.Menu()
  22.  
  23.         about = gtk.MenuItem("About")
  24.         quit = gtk.MenuItem("Quit")
  25.        
  26.         about.connect("activate", self.show_about_dialog)
  27.         quit.connect("activate", gtk.main_quit)
  28.        
  29.         menu.append(about)
  30.         menu.append(quit)
  31.        
  32.         menu.show_all()
  33.        
  34.         menu.popup(None, None, gtk.status_icon_position_menu, button, time, self.statusicon)
  35.        
  36.     def show_about_dialog(self, widget):
  37.         about_dialog = gtk.AboutDialog()
  38.  
  39.         about_dialog.set_destroy_with_parent(True)
  40.         about_dialog.set_name("StatusIcon Example")
  41.         about_dialog.set_version("1.0")
  42.         about_dialog.set_authors(["Andrew Steele"])
  43.                
  44.         about_dialog.run()
  45.         about_dialog.destroy()
  46.  
  47. StatusIcon()
  48. gtk.main()

Etiquetas: gtk, popup
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:58.