2
我有一个自定义的gtk.treeview
包装类,它管理自己的liststore。这个类有它自己的方法来清除liststore的数据并用新数据覆盖它。为了测试内存消耗,树视图仅显示8列中的50,000行整数。GtkTreeView树存储分配
我注意到,每次调用我的函数,用数据更新liststore似乎都会增加应用程序使用的内存,并且在数据清除后它永远不会回落。
这是我简单的TreeView实现:
class TreeViewPrototype(gtk.TreeView):
def __init__(self):
gtk.TreeView.__init__(self)
self.columns = [str, str, str, str, str, str, str, str]
# Initialize Treeview and TreeViewColumns here
# Setup columns
self.liststore = gtk.ListStore(*self.columns)
self.set_model(self.liststore)
def set_list_model(self):
self.liststore.clear()
self.liststore = gtk.ListStore(*self.columns)
# Populate liststore with dummy data
for i in range(50000):
row = []
for j in range(len(self.columns)):
row.append("%d[%d]"%(i,j))
self.liststore.append(row)
在我看来,每一个呼叫set_list_model,当我覆盖liststore用一个新的,它永远不会释放这些数据的存储。我究竟做错了什么?
如何将列表存储设置为树视图的数据存储? – XORcist 2012-02-16 20:14:08
@möter对不起,我无意中将它遗漏了。编辑来解决这个问题。 – Wes 2012-02-16 21:07:09
您似乎没有将数据存储重新设置到set_list_model中的新ListStore实例。 – XORcist 2012-02-16 21:35:52