Каждый пункт это отдельная статья, открывающий статью в браузере.
Вот только при изменении состава(перестроении) меню течет память.
Ниже код, который это иллюстрирует.
Где именно течет память? И как ее корректно освободить?
#!/usr/bin/python
# -*- encoding:utf-8 -*-
import gtk
import threading
import time
import random
class Monitor:
def __init__(self):
self.menu = gtk.Menu()
self.tray = gtk.StatusIcon()
self.tray.set_from_file('monitor.png')
self.tray.set_tooltip('ждите...')
self.tray.connect('popup-menu', self.popup, self.menu)
gtk.gdk.threads_init ()
self.thread = threading.Thread(target=self.circleUpdate, name="update")
self.thread.start()
def circleUpdate(self):
self.threadStatus = True
while(self.threadStatus):
self.updateMon()
time.sleep(2)
def updateMon(self):
gtk.gdk.threads_enter()
for i in self.menu:
self.menu.remove(i)
del i
for i in xrange(random.randint(10,20)):
item = gtk.ImageMenuItem('меню номер %d'%i)
self.menu.append(item)
gtk.gdk.threads_leave()
print u'обновлено'
def popup(self,widget, button, time, data = None):
data.show_all()
data.popup(None, None, None, 3, time)
if __name__ == "__main__":
gtk.gdk.threads_init()
app = Monitor()
gtk.main()