Ikona v Systray (1)
Vzorový kód, pôvodne napísaný pre PHP GTK2 (zverejnený v php-gtk2 Cookbook), ktorý som upravil tak, aby fungoval v Pythone. Príklad ukazuje ako spustiť jednoduchú aplikáciu v SysTray.
Obsah článku
Cieľ
Pripraviť ikonu v SysTray, ktorá bude simulovať prehrávač hudby. Keď
je aplikácia spustená, zobrazí v SysTray štandardnú ikonu zastavenia
prehrávania (STOCK_MEDIA_STOP
). Po kliknutí na ikonu sa ikona zmení na
ikonu prehrávania (STOCK_MEDIA_PLAY
).
Riešenie
Nastavenie ikony v oznamovacej oblasti (SysTray) možno jednoducho docieliť pomocou widgetu gtk.StatusIcon, ktorý je dostupný od gtk+2.10.
- ikona je nastavená ako štandardná (stock) ikona pomocou
StatusIcon.set_from_stock()
. Zoznam štandardných ikon je dostupný v dokumentácii PyGTK; - ikone možno priradiť aj nástrojový tip, pomocou
StatusIcon.set_tooltip()
; - signál
activate
umožňuje zachytiť kliknutie ľavým tlačidlom myši; - signál
popup-menu
umožňuje zachytiť kliknutie pravým tlačidlom myši.
Vzorový kód
import gtk
def on_activate(statusicon):
global player_status
if player_status: # poznámka 6
statusicon.set_from_stock(gtk.STOCK_MEDIA_STOP)
statusicon.set_tooltip('Left click to PLAY')
player_status = 0
else:
statusicon.set_from_stock(gtk.STOCK_MEDIA_PLAY)
statusicon.set_tooltip('Left click to STOP')
player_status = 1
def on_popup_menu(statusicon):
print "on_popup_menu"
statusicon = gtk.StatusIcon() # poznámka 1
statusicon.set_from_stock(gtk.STOCK_MEDIA_STOP) # poznámka 2
statusicon.set_tooltip('Left click to PLAY') # poznámka 3
player_status = 0
statusicon.connect('activate', on_activate) # poznámka 4
statusicon.connect('popup-menu', on_popup_menu) # poznámka 5
gtk.main()
Vysvetlenie
- Vytvorenie novej stavovej ikony.
- Nastavenie ikony.
- Nastavenie nástrojového tipu.
- Zachytenie kliknutia ľavým tlačidlom.
- Zachytenie kliknutia pravým tlačidlom.
- Zmena ikony v závislosti od aktuálneho stavu aplikácie.