加快gtk.IconView中图像加载速度
我想显示一个139列 * 121行的图片地图。
(图片大小是32*32像素)
我使用了一个gtk.Iconview
,配合gtk.ListStore
,然后用gtk.gdk.Pixbuf
来填充它,像这样:
(这个二维的graph
列表里包含了要显示的图片路径的对象)
pixbuf_passage = gtk.gdk.pixbuf_new_from_xpm_data(xpmdata)
for row in graph :
for col in row :
pixbuf = gtk.gdk.pixbuf_new_from_file(col.img_base)
if col.passage :
pixbuf_passage.composite(pixbuf, 0, 0, pixbuf_passage.props.width, pixbuf_passage.props.height, 0, 0, 1.0, 1.0, gtk.gdk.INTERP_BILINEAR, 255)
self.grid.listStore.append([pixbuf, tooltip])
我的问题是,加载这些图片的时间可能会很长,这取决于电脑的配置:
- 对于一台配有4GB内存的Intel Core i7,大约需要20秒(这个时间可以接受)
- 对于一台配有4GB内存的AMD X2 4200+,大约需要160秒(这个时间太长了)
有没有什么办法可以加快图片的加载速度?
也许使用gtk.Iconview
在这里不是最优的选择?
谢谢
1 个回答
1
PyGTK常见问题解答里有一些小建议。最重要的一点是,当你要添加很多条目时,应该先冻结树视图或图标视图,并暂时取消它的模型。
treeview.freeze_child_notify()
treeview.set_model(None)
# Add rows to the model
# ...
treeview.set_model(model)
treeview.thaw_child_notify()
使用g_idle_add这个技巧也能让用户界面更加灵敏。