python - 加快 gtk.IconView 中的图像加载速度

标签 python image gtk pygtk pixbuf

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

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

我使用 gtk.Iconviewgtk.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 RAM 的 Intel Core i7,约为 20 秒(可接受)
  • 对于具有 4Gb RAM 的 AMD X2 4200+ 来说约为 160 秒(太长了)

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

谢谢

最佳答案

PyGTK FAQ为此有一些提示。最重要的似乎是您应该在添加大量条目时卡住 TreeView /图标 View 并暂时取消设置其模型。

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 的响应能力也很有用。

关于python - 加快 gtk.IconView 中的图像加载速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8704963/

相关文章:

Android ImageView 重叠触摸问题

gtk - 在百老汇使用 GTK+

c - 用户在窗口外单击时如何隐藏 Gtk 弹出窗口

python:在第一个条件变为假后运行第二个条件

python - python中的记录器链

python - pandas.DataFrame.round 似乎不适用于我的 DataFrame - 舍入问题导致额外的数据存储在 csv 文件中

haskell - 如何使用 Haskell 在 GTK 中显示原始像素数据的图像?

python - memit 和 timeit 同时

android - 如何分享ImageView的图片?

r - 将 R 图像转换为 Base 64