Потребовалось написать апплет для гнома, который парсит страничку провайдера. Воспользовавшись инструкцией с хабра я его сделал, но текст располагается не посередине, а сверху. Помогите сделать его по центру. Времени вникать в pygtk нету, поэтому и спрашиваю.
/home/nvbn/weather/main.py:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
|
#!/usr/bin/env python # coding=utf-8 import sys, os, gtk, gtk.gdk, pygtk, gnomeapplet, gnome pygtk.require('2.0') class MyApplet (gnomeapplet.Applet): def __init__ (self, applet, iid): self.applet = applet self.applet.set_name('MyApplet') self.hbox = gtk.HBox() self.applet.add(self.hbox) self.event = gtk.EventBox() self.hbox.add(self.event) self.info = gtk.Label() self.event.add(self.info) # Чтобы объект мог реагировать на различные события, его нужно поместить в Event Box self.event.set_tooltip_text('Погода в центре Иркутска') self.__init_popupmenu() self.applet.connect('destroy', self.callback_destroy) self.applet.show_all() # Показываем все это на панели self.info.set_text(self.get_info()) def __init_popupmenu (self): self.applet.setup_menu(''' <popup name='button3'> <menuitem name='About Item' verb='About' stockid='gtk-about'/> </popup>''', < ('About', self.callback_about) >, None) def get_info (self): return os.popen("echo `wget -qO - http://domseti.ru/termometr.php|iconv -f Windows-1251 -t UTF-8 -|grep Иркутcк\ Центр|awk '{ print $5 }'|sed 's/<b>//g'` °C").read() def callback_about (self, event, data=None): '''Показываем стандартное окошко среды GNOME''' os.system('gnome-about') def callback_destroy (self, applet): '''Уничтожаем объект''' del self.applet def applet_factory (applet, iid): MyApplet(applet, iid) return True def main (args): gnomeapplet.bonobo_factory('OAFIID:GNOME_MyApplet_Factory', MyApplet.__gtype__, 'My Applet', '1.0', applet_factory) if __name__ == '__main__': main(sys.argv)
|
/usr/lib/bonobo/servers/gnomeMyAppletFactory.server:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
<oaf_info> <oaf_server iid='OAFIID:GNOME_MyApplet_Factory' type='exe' location='/home/nvbn/weather/main.py'> <oaf_attribute name='repo_ids' type='stringv'> <item value='IDL:Bonobo/GenericFactory:1.0' /> <item value='IDL:Bonobo/Unknown:1.0' /> </oaf_attribute> <oaf_attribute name='name' type='string' value='My Applet' /> <oaf_attribute name='description' type='string' value='Show your karma and ratio' /> </oaf_server> <oaf_server iid='OAFIID:GNOME_MyApplet' type='factory' location='OAFIID:GNOME_MyApplet_Factory'> <oaf_attribute name='repo_ids' type='stringv'> <item value='IDL:GNOME/Vertigo/PanelAppletShell:1.0' /> <item value='IDL:Bonobo/Control:1.0' /> <item value='IDL:Bonobo/Unknown:1.0' /> </oaf_attribute> <oaf_attribute name='name' type='string' value='altanet weather applet' /> <oaf_attribute name='description' type='string' value='Show weather' /> <oaf_attribute name='panel:category' type='string' value='Utility' /> <oaf_attribute name='panel:icon' type='string' value='weather-storm' /> </oaf_server> </oaf_info>
|
Вставка на bash используется, так как была написана за долго до этого.