2016-10-16 32 views
0

我有一個簡單的iconview小部件,可以從商店中讀取pixbuf。我想縮放pixbufs,所以我用iconview的set_cell_data_func。但有一個問題。它調用它只是9次爲一排,運行更慢,甚至flowbox爲什麼gtk3 iconview調用一行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似乎比圖標視圖更適合但隨後拇指必須是小部件而不是單元格渲染器。
你們有什麼想法可以減少它嗎?謝謝。 exmp

回答

0

我看不到pixbufs添加到您的liststore。 也許如果你只是寫:

# 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

+0

我想在GNOME Files's圖標大小規模的改變pixbuf的大小動態等。不想在商店中放置每個縮放尺寸 – user3623988

相關問題