Можно ли нарисовать GtkTreeView, перечисленный как GtkIconView?
Я работаю над приложением GTK+, написанным на python. Я, очевидно, использую PyGtk. Мое приложение касается коллекций видео. Это своего рода F-spot или Picasa, но для видео.
Как вы можете видеть в этих двух приложениях, у вас есть центральная область, где вы можете видеть все свои фотографии с миниатюрами тегов.В моем приложении я хочу реализовать тот же kinf представления. А пока я просто использую это:
A gtk.Table
, содержащий VBox
, внутри VBox
a Pixbuf
(миниатюра моего видео) и HBox
, а внутри HBox
столько же Pixbuf
, Сколько тегов.
IconView
и TreeView
. Но IconView
может отображать только один pixbuf на "строку", а TreeView не отображается в виде сетки, как IconView
.
Мой вопрос: есть ли способ отображения TreeView как IconView (в сетке) ? Как бы вы реализовали способ размещения фотографий в F-spot а бирки под ними?
2 ответа:
IconView
это то, что вам нужно. ВListStore
каждая строка представляет только один 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()
Лучший подход-либо придерживаться таблицы и переопределять выборки, либо использовать пользовательскую версию IconView с пользовательским cellrenderer, который может принимать gtk.HBox ().
Некоторые рекомендации о пользовательском 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
По словам Рубена Вермеерша, Ф-горшок использовать модифицированную версию IconView. Код можно найти здесь : http://git.gnome.org/browse/f-spot/?h=icon-view-cleanup