Skip to main content
 首页 » 编程设计

python之是否可以绘制像 GtkIconView 一样列出的 GtkTreeView

2025年05月04日9davidwang456

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

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

在我的应用中,我想实现相同的 View 。现在我只使用这个:

一个 gtk.Table 包含一个 VBox,在 VBox 里面一个 Pixbuf (我的视频缩略图)和一个 HBox,在 HBox 内部,与标签一样多的 Pixbuf。

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

深入查看文档,我在我的需要附近找到了两个小部件:IconView 和 TreeView。但是 IconView 每“行”只能显示一个 pixbuf,而 TreeView 不像 IconView 那样显示为网格。

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

请您参考如下方法:

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()