2

我正在开发一个用 python 编写的 GTK+ 应用程序。我显然使用 PyGtk。我的申请是关于视频集的。这是一种 F-spot 或 Picasa,但用于视频。

正如您在这两个应用程序中看到的那样,您有一个中心区域,您可以在其中查看所有带有标签缩略图的照片。

在我的应用程序中,我想实现相同的视图。现在我只是使用这个:

Agtk.Table包含 a VBox,在VBoxa Pixbuf(我的视频缩略图)和 aHBox内,以及在 内,与标签HBox一样多。Pixbuf

它正在工作,但它很丑陋,而且它似乎不是更好的解决方案。

深入查看文档,我发现了两个我需要的小部件:IconViewTreeView. 但是IconView每个“行”只能显示一个 pixbuf,并且 TreeView 不会显示为像IconView.

我的问题:有没有办法像 IconView 一样显示 TreeView(在网格中)?您将如何实现在下方排列照片和标签的 F-spot 方式?

4

2 回答 2

1

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()
于 2010-08-31T07:23:27.827 回答
0

最好的方法是坚持使用表格并重新实现选择,或者使用自定义版本的 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

根据 Ruben Vermeersch 的说法,f-pot 使用了 IconView 的修改版本。代码可以在这里找到: http ://git.gnome.org/browse/f-spot/?h=icon-view-cleanup

于 2010-09-02T10:16:47.973 回答