加快gtk.IconView中图像加载速度

1 投票
1 回答
808 浏览
提问于 2025-04-17 09:24

我想显示一个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这个技巧也能让用户界面更加灵敏。

撰写回答