我想显示一个 139 列 * 121 行的图像 map 。
(图片尺寸为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 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/