为什么gtk3 iconview调用一行9次映射函数?

时间:2016-10-16 14:35:45

标签: python gtk3

我有简单的iconview小部件,可以从商店中读取pixbuf。我想缩放pixbufs所以我使用了iconview的set_cell_data_func。但有一个问题。它只调用一次9行,运行速度更慢甚至是流量计

self.iconmodel = Gtk.ListStore(GdkPixbuf.Pixbuf)

self.icon = Gtk.IconView()
self.icon.set_model(self.iconmodel)
self.icon.set_pixbuf_column(0)

self.icon.set_cell_data_func(self.icon.get_cells()[0], self.custom_cell_function, None)

def custom_cell_function(self, cell_layout, cell, tree_model, tree_iter, data):
    p = tree_model[tree_iter][0]
    p = p.scale_simple(p.get_width()*0.33, p.get_height()*0.33, 1)
    cell.set_property('pixbuf', p)

在图片中,商店里有127个pixbuf并且调用func 989次:) Flowbox似乎比图标视图更合适但是所有的拇指必须是widget而不是cell renderer。
你们有什么想法减少它吗?谢谢。 exmp

1 个答案:

答案 0 :(得分:0)

我看到没有pixbuf添加到你的列表库。 也许如果你只是写:

# for p in your_pixbufs
p = p.scale_simple(p.get_width()*0.33, p.get_height()*0.33, 1)
self.iconmodel.append( [p] )

而不是cell_data_func