Найти - Пользователи
Полная версия: PyGTK течет память при изменении состава popup menu
Начало » GUI » PyGTK течет память при изменении состава popup menu
1
gimp
пытаюсь сделать подобие rss клиента в трее
Каждый пункт это отдельная статья, открывающий статью в браузере.
Вот только при изменении состава(перестроении) меню течет память.
Ниже код, который это иллюстрирует.

Где именно течет память? И как ее корректно освободить?

#!/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()
bw
Может какой-нибудь .destroy() для каждого элемента делать надо?

..bw
gimp
Хм, ну надо же, destroy() помог. Спасибо
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB