1

139 列 * 121 行のイメージ マップを表示したい。

(画像サイズは 32*32px)

次のように、を で埋める とともにgtk.Iconviewを使用します。gtk.ListStoregtk.gdk.Pixbuf

(2 次元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 FAQには、これに関するヒントがいくつかあります。最も重要なことは、ツリービュー/アイコンビューをフリーズし、そのモデルを一時的に設定解除して、多くのエントリを追加することです。

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 に答える