1

我想显示一个 139 列 * 121 行的图像映射。

(图片尺寸为 32*32 像素)

我将 agtk.Iconviewgtk.ListStore我填充的 ​​a 一起使用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 RAM 的 Intel Core i7 约 20 秒(可以接受)
  • 具有 4Gb RAM 的 AMD X2 4200+ 约 160 秒(太长)

有什么办法可以加快图片加载速度?也许在这里使用 gtk.Iconview 不是最佳选择?

谢谢

4

1 回答 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 的技巧对于增加 UI 的响应能力也很有用。

于 2012-01-05T09:14:33.650 回答