2

私はPythonで書かれたGTK +アプリケーションに取り組んでいます。私は明らかにPyGtkを使用しています。私のアプリケーションは、ビデオのコレクションに関するものです。F スポットや Picasa の一種ですが、ビデオ用です。

これら 2 つのアプリでわかるように、タグのサムネイルが下にあるすべての写真を表示できる中央の領域があります。

私のアプリでは、同じ種類のビューを実装したいと考えています。今のところ、これを使用するだけです:

(私の動画のサムネイル)内に とgtk.Tableを含み、タグと同じ数の 内にを含む。VBoxVBoxPixbufHBoxHBoxPixbuf

それは機能していますが、醜く、より良い解決策ではないようです。

ドキュメントを詳しく調べたところ、ニーズに近い 2 つのウィジェットが見つかりました:IconViewTreeView. ただし、IconView「行」ごとに 1 つの pixbuf しか表示できず、TreeView は のようなグリッドとして表示されませんIconView

私の質問: TreeView を IconView (グリッド内) のように表示する方法はありますか? 写真とタグを下に配置する F スポットの方法をどのように実装しますか?

4

2 に答える 2

1

IconView必要なものです。すべての行はListStore1 つの pixbuf のみを表しIconViewますが、グリッド内の画像を調整します。ここに小さな例を示します。引数として表示する画像ファイルを使用して起動します。次に例を示します。

python example.py /usr/share/icons/hicolor/16x16/apps/*

.

import sys
import gtk


store = gtk.ListStore(gtk.gdk.Pixbuf)
iv = gtk.IconView(store)
iv.set_pixbuf_column(0)
for arg in sys.argv[1:]:
    pixbuf = gtk.gdk.pixbuf_new_from_file(arg)
    store.append((pixbuf, ))

w = gtk.Window()
w.connect('destroy', lambda w: gtk.main_quit())
sw = gtk.ScrolledWindow()
w.add(sw)
sw.add(iv)
w.show_all()
gtk.main()
于 2010-08-31T07:23:27.827 に答える
0

最善のアプローチは、テーブルに固執して選択を再実装するか、gtk.HBox() を取ることができるカスタム cellrenderer で IconView のカスタム バージョンを使用することです。

カスタム cellrenderer に関するいくつかのガイドラインは次のとおりです。

http://faq.pygtk.org/index.py?req=show&file=faq13.045.htp

http://faq.pygtk.org/index.py?req=show&file=faq13.056.htp

pygtkメーリングリストで議論が行われました:

htp://old.nabble.com/Drawing-widgets-in-a-custom-cellrenderer-td14207692.html

WWWalter サンプルコードを作成 : http://www.translate.org.za/blogs/walter/en/content/conquering-cellrendererwidget

Ruben Vermeersch によると、f-pot は IconView の修正版を使用しています。コードはここにあります: http://git.gnome.org/browse/f-spot/?h=icon-view-cleanup

于 2010-09-02T10:16:47.973 に答える