我有简单的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
答案 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